/// <summary>
        /// Send mail
        /// </summary>
        /// <param name="employeeIdentityRegistration"></param>
        /// <returns></returns>
        private async Task sendMailToEmployee(EmployeeIdentityRegistration employeeIdentityRegistration)
        {
            var bodyContent  = "Bienvenido a Cotorria, tu empresa te invita a usar la App Móvil de Cotorria, te mandamos tu código de activación ";
            var mailProvider = FactoryMailProvider.CreateInstance(FactoryMailProvider.GetProviderFromConfig());
            var sendParams   = new SendMailParams()
            {
                HTMLContent       = $"{bodyContent}: {employeeIdentityRegistration.ActivationCode}",
                PlainContentText  = $"{bodyContent}: {employeeIdentityRegistration.ActivationCode}",
                SendMailAddresses = new List <SendMailAddress>()
                {
                    new SendMailAddress()
                    {
                        Email = employeeIdentityRegistration.Email
                    }
                },
                Subject = "Invitación a Cotorria"
            };

            await mailProvider.SendMailAsync(sendParams);
        }
예제 #2
0
        public async Task SendEmail_XMLTM()
        {
            ISendMailProvider sendMailProvider = FactoryMailProvider.CreateInstance(FactoryMailProvider.GetProviderFromConfig());
            var sendMailParams = new Schema.SendMailParams()
            {
                HTMLContent      = "<strong>Este es un correo de prueba</strong>",
                PlainContentText = "Este es un correo de prueba",
                Subject          = "Cotorria entrega CFDI"
            };

            var bytesContent = File.ReadAllBytes(Path.Combine(EmployerRegistrationUT.AssemblyDirectory, "testingFiles\\example.xml"));

            sendMailParams.SendMailAddresses.Add(new Schema.SendMailAddress()
            {
                Email = "*****@*****.**", Name = "Omar"
            });
            sendMailParams.SendMailAttachments.Add(new Schema.SendMailAttachment()
            {
                Attachment = bytesContent, Filename = "cfdi.xml", TypeAttachment = TypeAttachment.XML
            });

            await sendMailProvider.SendMailAsync(sendMailParams);
        }
        private async Task <PayrollStampingResult> payrollStampingCoreAsync(PayrollStampingParams payrollStampingParams,
                                                                            List <Overdraft> historicOverdraftsToStamp,
                                                                            List <Incident> incidents,
                                                                            List <Inhability> inhabilities,
                                                                            List <EmployerFiscalInformation> employerFiscalInformations,
                                                                            List <PayrollCompanyConfiguration> payrollConfigurations)
        {
            var payrollStampingResult = new PayrollStampingResult();

            List <string> zipCodesToFind =
                historicOverdraftsToStamp.Select(p => p.HistoricEmployee.EmployerRegistrationZipCode).ToList();

            zipCodesToFind.AddRange(payrollConfigurations.Select(p => p.Address?.ZipCode));

            //Obtener los zipCodes
            var zipCodeMiddlewareManager = new MiddlewareManager <catCFDI_CodigoPostal>(
                new BaseRecordManager <catCFDI_CodigoPostal>(),
                new catCFDI_CodigoPostalValidator());
            var zipCodes = await zipCodeMiddlewareManager.FindByExpressionAsync(p =>
                                                                                zipCodesToFind.Contains(p.c_CodigoPostal)
                                                                                , payrollStampingParams.IdentityWorkID);

            //Round for currency
            var roundUtil = new RoundUtil(payrollStampingParams.Currency.ToString());

            //Zip Code manager
            var zipCodeManager = new ZipCodeManager(zipCodes);

            //Blob Storage Util
            var blobStorageUtil = new BlobStorageUtil(payrollStampingParams.InstanceID);
            await blobStorageUtil.InitializeAsync();

            ISendMailProvider sendMailProvider = FactoryMailProvider.CreateInstance(SendMailProvider.SendGrid);

            var tasks = new List <Task <List <PayrollStampingResultDetail> > >();

            foreach (var overdraftToStamp in historicOverdraftsToStamp)
            {
                tasks.Add(doWorkAsync(overdraftToStamp, roundUtil, zipCodeManager,
                                      payrollStampingParams, blobStorageUtil, sendMailProvider, incidents,
                                      inhabilities, employerFiscalInformations, payrollConfigurations));
            }

            ConcurrentBag <PayrollStampingResultDetail> payrollStampingDetails = new ConcurrentBag <PayrollStampingResultDetail>();

            foreach (var task in await Task.WhenAll(tasks))
            {
                foreach (var insideTask in task)
                {
                    payrollStampingDetails.Add(insideTask);
                }
            }
            payrollStampingResult.PayrollStampingResultDetails = payrollStampingDetails.ToList();

            //Update DB indicate that Overdraft was stamped correctly / PeriodDetail
            await saveOverdraftStampedAsync(payrollStampingParams, payrollStampingResult);

            //Errors preparation
            if (payrollStampingResult.PayrollStampingResultDetails.Any(p => p.PayrollStampingResultStatus == PayrollStampingResultStatus.Fail))
            {
                var errorMessages = payrollStampingResult.PayrollStampingResultDetails.Select(p => p.Message);
                throw new CotorraException(109, "109", string.Join("\n", errorMessages), null);
            }

            return(payrollStampingResult);
        }