/// <summary> /// Sends the worker requests to share point. /// </summary> /// <returns>The worker requests to share point.</returns> /// <param name="requests">Requests.</param> public async Task <(bool, string)> SendWorkerRequestsToSharePoint(List <IncompleteWorkerScreening> requests) { int suffix = (int)DateTimeOffset.UtcNow.ToUnixTimeSeconds(); List <CsvWorkerExport> workersExports = new List <CsvWorkerExport>(); string workerfilePrefix = ""; foreach (var request in requests) { workersExports.Add(CsvWorkerExport.CreateFromRequest(request)); workerfilePrefix = request.Contact?.SpdJobId + "_" + request.Contact?.LastName; } using (var mem = new MemoryStream()) using (var writer = new StreamWriter(mem)) using (var csvWriter = new CsvWriter(writer)) { csvWriter.Configuration.HasHeaderRecord = true; csvWriter.Configuration.RegisterClassMap <CsvWorkerExportMap>(); csvWriter.WriteHeader <CsvWorkerExport>(); csvWriter.NextRecord(); csvWriter.WriteRecords(workersExports); writer.Flush(); mem.Position = 0; try { _logger.LogInformation("Uploading workers CSV."); return(await _sharepoint.UploadFile($"{workerfilePrefix}_workers_{suffix}.csv", DOCUMENT_LIBRARY, REQUESTS_PATH + "/" + WORKERS_PATH, mem, "text/csv")); } catch (Exception ex) { _logger.LogError("Error uploading workers CSV to sharepoint"); _logger.LogError("Error: " + ex.Message); return(false, ""); } } }
/// <summary> /// Import responses to Dynamics. /// </summary> /// <returns></returns> public void ImportWorkerRequestsToSMTP(PerformContext hangfireContext, List <WorkerScreeningRequest> requests) { List <CsvWorkerExport> export = new List <CsvWorkerExport>(); foreach (WorkerScreeningRequest workerRequest in requests) { CsvWorkerExport csvWorkerExport = new CsvWorkerExport() { Lcrbworkerjobid = workerRequest.RecordIdentifier, Birthdate = $"{workerRequest.BirthDate:yyyy-MM-dd}", Birthplacecity = workerRequest.Birthplace, Driverslicence = workerRequest.DriversLicence, Bcidentificationcardnumber = workerRequest.BCIdCardNumber, }; //Selfdisclosure = workerRequest.SelfDisclosure, //Gendermf = workerRequest.Gender, if (workerRequest.Contact != null) { csvWorkerExport.Legalsurname = workerRequest.Contact.LastName; csvWorkerExport.Legalfirstname = workerRequest.Contact.FirstName; csvWorkerExport.Legalmiddlename = workerRequest.Contact.MiddleName; csvWorkerExport.Contactphone = workerRequest.Contact.PhoneNumber; csvWorkerExport.Personalemailaddress = workerRequest.Contact.Email; } if (workerRequest.Address != null) { csvWorkerExport.Addressline1 = workerRequest.Address.AddressStreet1; csvWorkerExport.Addresscity = workerRequest.Address.City; csvWorkerExport.Addressprovstate = workerRequest.Address.StateProvince; csvWorkerExport.Addresscountry = workerRequest.Address.Country; csvWorkerExport.Addresspostalcode = workerRequest.Address.Postal; } /* Flatten up the aliases */ var aliasId = 1; foreach (var alias in workerRequest.Aliases) { csvWorkerExport[$"Alias{aliasId}surname"] = alias.Surname; csvWorkerExport[$"Alias{aliasId}middlename"] = alias.SecondName; csvWorkerExport[$"Alias{aliasId}firstname"] = alias.GivenName; aliasId++; if (aliasId > MAX_WORKER_ALIAS) { break; } } /* Flatten up the previous addresses */ var addressId = 1; foreach (var address in workerRequest.PreviousAddresses) { string addressIdString = addressId.ToString(); if (addressId == 10) { addressIdString = "x"; } csvWorkerExport[$"Previousstreetaddress{addressIdString}"] = address.AddressStreet1; csvWorkerExport[$"Previouscity{addressIdString}"] = address.City; csvWorkerExport[$"Previousprovstate{addressIdString}"] = address.StateProvince; csvWorkerExport[$"Previouscountry{addressIdString}"] = address.Country; csvWorkerExport[$"Previouspostalcode{addressIdString}"] = address.Postal; addressId++; if (addressId > MAX_WORKER_PREVIOUS_ADDRESS) { break; } } export.Add(csvWorkerExport); } Attachment attachment = Attachment.CreateAttachmentFromString(CreateWorkerCSV(export), "Worker_ScreeningRequest.csv", Encoding.UTF8, "text/csv"); bool sentEmail = SendSPDEmail(new List <Attachment>() { attachment }, "New Cannabis Worker Screening Request Received", ""); if (sentEmail) { _logger.LogError($"Sent email to {Configuration["SPD_EXPORT_EMAIL"]}."); } else { _logger.LogError($"Unable to send email to {Configuration["SPD_EXPORT_EMAIL"]}."); } }