/// <summary> /// Check the import mailbox. Returns the first CSV file in the mailbox. /// </summary> /// <returns></returns> public async Task CheckMailBoxForImport(PerformContext hangfireContext) { Pop3Client pop3Client = new Pop3Client(); await pop3Client.ConnectAsync(Configuration["SPD_IMPORT_POP3_SERVER"], Configuration["SPD_IMPORT_POP3_USERNAME"], Configuration["SPD_IMPORT_POP3_PASSWORD"], true); List <Pop3Message> messages = (await pop3Client.ListAndRetrieveAsync()).ToList(); foreach (Pop3Message message in messages) { var attachments = message.Attachments.ToList(); if (attachments.Count > 0) { // string payload = null; // File.ReadAllText("C:\\tmp\\testimport.csv"); string payload = Encoding.Default.GetString(attachments[0].GetData()); if (payload != null) // parse the payload { List <WorkerResponse> responses = WorkerResponseParser.ParseWorkerResponse(payload); foreach (WorkerResponse workerResponse in responses) { // search for the Personal History Record. MicrosoftDynamicsCRMadoxioPersonalhistorysummary record = _dynamics.Personalhistorysummaries.GetByWorkerJobNumber(workerResponse.RecordIdentifier); if (record != null) { // update the record. MicrosoftDynamicsCRMadoxioPersonalhistorysummary patchRecord = new MicrosoftDynamicsCRMadoxioPersonalhistorysummary() { AdoxioSecuritystatus = SPDResultTranslate.GetTranslatedSecurityStatus(workerResponse.Result), AdoxioCompletedon = workerResponse.DateProcessed }; try { _dynamics.Personalhistorysummaries.Update(record.AdoxioPersonalhistorysummaryid, patchRecord); } catch (OdataerrorException odee) { hangfireContext.WriteLine("Error updating worker personal history"); hangfireContext.WriteLine("Request:"); hangfireContext.WriteLine(odee.Request.Content); hangfireContext.WriteLine("Response:"); hangfireContext.WriteLine(odee.Response.Content); } } } } } await pop3Client.DeleteAsync(message); hangfireContext.WriteLine("Deleted message:"); } }
/// <summary> /// Import responses to Dynamics. /// </summary> /// <returns></returns> private void ImportResponses(PerformContext hangfireContext, List <WorkerResponse> responses) { foreach (WorkerResponse workerResponse in responses) { // search for the Personal History Record. MicrosoftDynamicsCRMadoxioPersonalhistorysummary record = _dynamics.Personalhistorysummaries.GetByWorkerJobNumber(workerResponse.RecordIdentifier); if (record != null) { // update the record. MicrosoftDynamicsCRMadoxioPersonalhistorysummary patchRecord = new MicrosoftDynamicsCRMadoxioPersonalhistorysummary() { AdoxioSecuritystatus = SPDResultTranslate.GetTranslatedSecurityStatus(workerResponse.Result), AdoxioCompletedon = workerResponse.DateProcessed }; try { _dynamics.Personalhistorysummaries.Update(record.AdoxioPersonalhistorysummaryid, patchRecord); } catch (HttpOperationException odee) { hangfireContext.WriteLine("Error updating worker personal history"); hangfireContext.WriteLine("Request:"); hangfireContext.WriteLine(odee.Request.Content); hangfireContext.WriteLine("Response:"); hangfireContext.WriteLine(odee.Response.Content); _logger.LogError("Error updating worker personal history"); _logger.LogError("Request:"); _logger.LogError(odee.Request.Content); _logger.LogError("Response:"); _logger.LogError(odee.Response.Content); } } } }