Add API interface to call API
This commit is contained in:
parent
9acb9974a0
commit
0f65ccace5
57
Marco.Pms.UtilityApplication/ApiService.cs
Normal file
57
Marco.Pms.UtilityApplication/ApiService.cs
Normal file
@ -0,0 +1,57 @@
|
||||
using Newtonsoft.Json;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Net.Http;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace Marco.Pms.UtilityApplication
|
||||
{
|
||||
internal class ApiService
|
||||
{
|
||||
private readonly HttpClient _httpClient;
|
||||
private readonly string _apiUrl;
|
||||
|
||||
public ApiService(string apiUrl)
|
||||
{
|
||||
_httpClient = new HttpClient();
|
||||
_apiUrl = apiUrl;
|
||||
}
|
||||
|
||||
public async Task<bool> SendDataAsync<T>(T data)
|
||||
{
|
||||
try
|
||||
{
|
||||
var jsonContent = JsonConvert.SerializeObject(data);
|
||||
var content = new StringContent(jsonContent, Encoding.UTF8, "application/json");
|
||||
|
||||
HttpResponseMessage response = await _httpClient.PostAsync(_apiUrl, content);
|
||||
|
||||
response.EnsureSuccessStatusCode(); // Throws an exception if the HTTP response status is an error code.
|
||||
|
||||
string responseBody = await response.Content.ReadAsStringAsync();
|
||||
// You can parse the responseBody if your API returns something useful
|
||||
Console.WriteLine($"API Response: {responseBody}");
|
||||
|
||||
return true;
|
||||
}
|
||||
catch (HttpRequestException ex)
|
||||
{
|
||||
Console.WriteLine($"API request error: {ex.Message}");
|
||||
// Log or handle the error appropriately in your UI
|
||||
return false;
|
||||
}
|
||||
catch (JsonException ex)
|
||||
{
|
||||
Console.WriteLine($"JSON serialization error: {ex.Message}");
|
||||
return false;
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Console.WriteLine($"An unexpected error occurred: {ex.Message}");
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -13,30 +13,38 @@ namespace Marco.Pms.UtilityApplication
|
||||
public class DirectoryHelper
|
||||
{
|
||||
|
||||
public async Task<List<CreateContactDto>> GenerateCreateContactDto(List<Contacts> contactsData, List<CategoryMaster> categoryMasters, List<TagsMaster> tagsMaster, List<ProjectMaster> projectMaster)
|
||||
public async Task<(List<CreateContactDto>, List<Contacts>) > GenerateCreateContactDto(List<Contacts> contactsData, List<CategoryMaster> categoryMasters, List<TagsMaster> tagsMaster, List<ProjectMaster> projectMaster)
|
||||
{
|
||||
List<CreateContactDto> lstCreateContactDto = new List<CreateContactDto>();
|
||||
List<Contacts> failedContacts = new List<Contacts>();
|
||||
|
||||
CreateContactDto dto = null;
|
||||
foreach (Contacts contact in contactsData)
|
||||
{
|
||||
dto = new CreateContactDto();
|
||||
dto.Name = contact.Name;
|
||||
dto.Organization = contact.Organization;
|
||||
dto.Address = contact.Address;
|
||||
dto.ContactCategoryId = GetContactCategoryID(contact, categoryMasters);
|
||||
dto.Description = contact.MoreInformation;
|
||||
dto.ContactPhones = GetContactPhones(contact);
|
||||
dto.ContactEmails = GetContactEmails(contact);
|
||||
dto.ProjectIds = GetContactProjectIDs(contact, projectMaster);
|
||||
dto.BucketIds = GetContactBucketIDs(contact);
|
||||
dto.Tags = GetContactTags(contact, tagsMaster);
|
||||
|
||||
lstCreateContactDto.Add(dto);
|
||||
if (contact.Name != "")
|
||||
{
|
||||
dto = new CreateContactDto();
|
||||
dto.Name = contact.Name;
|
||||
dto.Organization = contact.Organization;
|
||||
dto.Address = contact.Address;
|
||||
dto.ContactCategoryId = GetContactCategoryID(contact, categoryMasters);
|
||||
dto.Description = contact.MoreInformation;
|
||||
dto.ContactPhones = GetContactPhones(contact);
|
||||
dto.ContactEmails = GetContactEmails(contact);
|
||||
dto.ProjectIds = GetContactProjectIDs(contact, projectMaster);
|
||||
dto.BucketIds = GetContactBucketIDs(contact);
|
||||
dto.Tags = GetContactTags(contact, tagsMaster);
|
||||
|
||||
lstCreateContactDto.Add(dto);
|
||||
}
|
||||
else
|
||||
{
|
||||
// export contact to log
|
||||
failedContacts.Add(contact);
|
||||
}
|
||||
}
|
||||
|
||||
return lstCreateContactDto;
|
||||
return (lstCreateContactDto, failedContacts);
|
||||
}
|
||||
|
||||
private List<ContactTagDto>? GetContactTags(Contacts contact, List<TagsMaster> tagsMaster)
|
||||
@ -226,9 +234,9 @@ namespace Marco.Pms.UtilityApplication
|
||||
{
|
||||
categoryMasters.Add(new CategoryMaster
|
||||
{
|
||||
CategoryID = transactionsSheet.Cells[row, 1].Text,
|
||||
Categories = transactionsSheet.Cells[row, 2].Text,
|
||||
Description = transactionsSheet.Cells[row, 3].Text,
|
||||
CategoryID = transactionsSheet.Cells[row, 1].Text.Trim(),
|
||||
Categories = transactionsSheet.Cells[row, 2].Text.Trim(),
|
||||
Description = transactionsSheet.Cells[row, 3].Text.Trim(),
|
||||
});
|
||||
}
|
||||
catch (FormatException ex)
|
||||
@ -253,8 +261,8 @@ namespace Marco.Pms.UtilityApplication
|
||||
{
|
||||
tagsMaster.Add(new TagsMaster
|
||||
{
|
||||
TagID = tagsMasterSheet.Cells[row, 1].Text,
|
||||
Tag = tagsMasterSheet.Cells[row, 2].Text,
|
||||
TagID = tagsMasterSheet.Cells[row, 1].Text.Trim(),
|
||||
Tag = tagsMasterSheet.Cells[row, 2].Text.Trim(),
|
||||
});
|
||||
}
|
||||
catch (FormatException ex)
|
||||
@ -279,8 +287,8 @@ namespace Marco.Pms.UtilityApplication
|
||||
{
|
||||
projectMaster.Add(new ProjectMaster
|
||||
{
|
||||
ProjectID = projectsMasterSheet.Cells[row, 1].Text,
|
||||
ProjectName = projectsMasterSheet.Cells[row, 2].Text,
|
||||
ProjectID = projectsMasterSheet.Cells[row, 1].Text.Trim(),
|
||||
ProjectName = projectsMasterSheet.Cells[row, 2].Text.Trim(),
|
||||
});
|
||||
}
|
||||
catch (FormatException ex)
|
||||
@ -306,23 +314,23 @@ namespace Marco.Pms.UtilityApplication
|
||||
{
|
||||
contactsData.Add(new Contacts
|
||||
{
|
||||
BucketId = masterSheet.Cells[row, 1].Text,
|
||||
Owner = masterSheet.Cells[row, 2].Text,
|
||||
Name = masterSheet.Cells[row, 3].Text,
|
||||
Designation = masterSheet.Cells[row, 4].Text,
|
||||
Organization = masterSheet.Cells[row, 5].Text,
|
||||
BucketId = masterSheet.Cells[row, 1].Text.Trim(),
|
||||
Owner = masterSheet.Cells[row, 2].Text.Trim(),
|
||||
Name = masterSheet.Cells[row, 3].Text.Trim(),
|
||||
Designation = masterSheet.Cells[row, 4].Text.Trim(),
|
||||
Organization = masterSheet.Cells[row, 5].Text.Trim(),
|
||||
|
||||
Mobile1 = masterSheet.Cells[row, 6].Text,
|
||||
Mobile2 = masterSheet.Cells[row, 7].Text,
|
||||
Mobile3 = masterSheet.Cells[row, 8].Text,
|
||||
Email1 = masterSheet.Cells[row, 9].Text,
|
||||
Email2 = masterSheet.Cells[row, 10].Text,
|
||||
Location = masterSheet.Cells[row, 11].Text,
|
||||
Address = masterSheet.Cells[row, 12].Text,
|
||||
MoreInformation = masterSheet.Cells[row, 13].Text,
|
||||
Category = masterSheet.Cells[row, 14].Text,
|
||||
Tags = masterSheet.Cells[row, 15].Text,
|
||||
Project = masterSheet.Cells[row, 16].Text
|
||||
Mobile1 = masterSheet.Cells[row, 6].Text.Trim(),
|
||||
Mobile2 = masterSheet.Cells[row, 7].Text.Trim(),
|
||||
Mobile3 = masterSheet.Cells[row, 8].Text.Trim(),
|
||||
Email1 = masterSheet.Cells[row, 9].Text.Trim(),
|
||||
Email2 = masterSheet.Cells[row, 10].Text.Trim(),
|
||||
Location = masterSheet.Cells[row, 11].Text.Trim(),
|
||||
Address = masterSheet.Cells[row, 12].Text.Trim(),
|
||||
MoreInformation = masterSheet.Cells[row, 13].Text.Trim(),
|
||||
Category = masterSheet.Cells[row, 14].Text.Trim(),
|
||||
Tags = masterSheet.Cells[row, 15].Text.Trim(),
|
||||
Project = masterSheet.Cells[row, 16].Text.Trim()
|
||||
});
|
||||
}
|
||||
catch (FormatException ex)
|
||||
|
@ -5,12 +5,17 @@
|
||||
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
||||
xmlns:local="clr-namespace:Marco.Pms.UtilityApplication"
|
||||
mc:Ignorable="d"
|
||||
Title="MainWindow" Height="450" Width="800">
|
||||
<Grid>
|
||||
<TextBox HorizontalAlignment="Left" Margin="207,72,0,0" TextWrapping="Wrap" Text="E:\Downloads\Directory Contacts - Marketing Team Yatin.xlsx" VerticalAlignment="Top" Width="348" Name="txtFilePath" FontSize="16"/>
|
||||
<Label Content="Select File" HorizontalAlignment="Left" Margin="86,66,0,0" VerticalAlignment="Top" Name="lblFileName" Height="29" Width="99" FontSize="16"/>
|
||||
<Button Content="Upload File" HorizontalAlignment="Left" Margin="560,72,0,0" VerticalAlignment="Top" Name="btnFileUpload" FontSize="16" Click="btnFileUpload_Click"/>
|
||||
<Button Content="Submit" HorizontalAlignment="Left" Margin="446,124,0,0" VerticalAlignment="Top" x:Name="btnSubmit" FontSize="16" RenderTransformOrigin="0.147,2.815" Click="btnSubmit_Click"/>
|
||||
Title="MainWindow" Height="450" Width="800" WindowState="Maximized">
|
||||
<Grid Margin="0,0,0,-113" UseLayoutRounding="False">
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="7*"/>
|
||||
<ColumnDefinition Width="93*"/>
|
||||
</Grid.ColumnDefinitions>
|
||||
<TextBox HorizontalAlignment="Left" Margin="80,36,0,0" TextWrapping="Wrap" Text="E:\Downloads\Directory Contacts - Marketing Team Yatin.xlsx" VerticalAlignment="Top" Width="508" Name="txtFilePath" FontSize="16" Grid.Column="1"/>
|
||||
<Label Content="Select File" HorizontalAlignment="Left" Margin="36,30,0,0" VerticalAlignment="Top" Name="lblFileName" Height="29" Width="99" FontSize="16" Grid.ColumnSpan="2"/>
|
||||
<Button Content="Upload File" HorizontalAlignment="Left" Margin="598,37,0,0" VerticalAlignment="Top" Name="btnFileUpload" FontSize="16" Click="btnFileUpload_Click" Width="118" Grid.Column="1"/>
|
||||
<Button Content="Submit" HorizontalAlignment="Left" Margin="309,70,0,0" VerticalAlignment="Top" x:Name="btnSubmit" FontSize="16" RenderTransformOrigin="0.147,2.815" Click="btnSubmit_Click" Width="117" Grid.Column="1"/>
|
||||
<DataGrid d:ItemsSource="{d:SampleData ItemCount=5}" Margin="0,118,0,0" Name="ContactsDataGrid" Grid.ColumnSpan="2"/>
|
||||
|
||||
</Grid>
|
||||
</Window>
|
||||
|
@ -9,10 +9,16 @@ namespace Marco.Pms.UtilityApplication
|
||||
/// </summary>
|
||||
public partial class MainWindow : Window
|
||||
{
|
||||
DirectoryHelper helper = new DirectoryHelper();
|
||||
//DirectoryHelper helper = new DirectoryHelper();
|
||||
private readonly DirectoryHelper _directoryHelper;
|
||||
private readonly ApiService _apiService;
|
||||
// Replace with your actual API endpoint
|
||||
private const string ApiEndpoint = "https://your-api-url.com/api/data";
|
||||
public MainWindow()
|
||||
{
|
||||
InitializeComponent();
|
||||
_apiService = new ApiService(ApiEndpoint);
|
||||
_directoryHelper = new DirectoryHelper();
|
||||
}
|
||||
|
||||
private void btnFileUpload_Click(object sender, RoutedEventArgs e)
|
||||
@ -37,11 +43,33 @@ namespace Marco.Pms.UtilityApplication
|
||||
List<TagsMaster> tagsMaster = null;
|
||||
List<ProjectMaster> projectMaster = null;
|
||||
List<CategoryMaster> categoryMasters = null;
|
||||
List<CreateContactDto> createContactDto = null;
|
||||
List<Contacts> failedContacts = null;
|
||||
|
||||
(contactsData, categoryMasters, tagsMaster, projectMaster) = await _directoryHelper.ReadExcelData(txtFilePath.Text);
|
||||
|
||||
(contactsData, categoryMasters, tagsMaster, projectMaster) = await helper.ReadExcelData(txtFilePath.Text);
|
||||
( createContactDto, failedContacts) = await _directoryHelper.GenerateCreateContactDto(contactsData, categoryMasters, tagsMaster, projectMaster);
|
||||
|
||||
List<CreateContactDto> createContactDto = await helper.GenerateCreateContactDto(contactsData, categoryMasters, tagsMaster, projectMaster);
|
||||
// Check if there's data to display
|
||||
if (failedContacts != null && failedContacts.Any())
|
||||
{
|
||||
// Assign the list to the DataGrid's ItemsSource
|
||||
ContactsDataGrid.ItemsSource = failedContacts;
|
||||
// You can optionally update a status text block
|
||||
// StatusTextBlock.Text = $"Displayed {importedContacts.Count} contacts.";
|
||||
}
|
||||
else
|
||||
{
|
||||
// Clear the DataGrid if no data
|
||||
ContactsDataGrid.ItemsSource = null;
|
||||
// StatusTextBlock.Text = "No contacts to display.";
|
||||
}
|
||||
|
||||
foreach (Contacts contact in contactsData)
|
||||
{
|
||||
//.Text = $"Sending {apiDataList.Count} records to API...";
|
||||
bool success = await _apiService.SendDataAsync(contact);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user