Exemplo n.º 1
0
        /// <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, "");
                        }
                    }
        }
Exemplo n.º 2
0
        /// <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"]}.");
            }
        }