/// <summary> /// Constructor /// </summary> /// <param name="membershipProvider"></param> public HomeControllerService(IRepository repository, ISendMailProvider sendMail, IWebServiceProvider webService) { _repository = repository; this._sendMail = sendMail; _httpContext = HttpContext.Current; _webService = webService; }
private async Task fireAndForgetAsync(PayrollStampingParams payrollStampingParams, Overdraft overdraftToStamp, List <PayrollCompanyConfiguration> payrollConfigurations, BlobStorageUtil blobStorageUtil, ISendMailProvider sendMailProvider, Guid UUID, string XML) { try { //7. Save XML to BlobStorage await blobStorageUtil.UploadDocumentAsync($"{UUID}.xml", XML); ////8. Transforma el XML a HTML y PDF var resultTransformation = await xmlTransformationAsync(payrollStampingParams, overdraftToStamp, XML); ////Save PDF to BlobStorage await blobStorageUtil.UploadDocumentAsync($"{UUID}.pdf", resultTransformation.PreviewTransformResultDetails.FirstOrDefault().TransformPDFResult); ////9. Send email with the payroll to Employee await sendMailAsync(overdraftToStamp, UUID, XML, resultTransformation.PreviewTransformResultDetails.FirstOrDefault().TransformPDFResult, sendMailProvider, payrollConfigurations); } catch (Exception ex) { Trace.TraceError($"No fue posible transformar / enviar el comprobante al colaborador. {ex.Message}"); } }
/// <summary> /// Constructor /// </summary> /// <param name="membershipProvider"></param> public PasswordService(IRepository repository, ISendMailProvider sendMail, IAuthenticationContentProvider authenticationContentProvider, ITokenResolver tokenResolver) { _repository = repository; this._sendMail = sendMail; _authenticationContentProvider = authenticationContentProvider; _tokenResolver = tokenResolver; _httpContext = HttpContext.Current; }
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); }
/// <summary> /// Constructor /// </summary> /// <param name="repository"></param> /// <param name="sendMail"></param> public AppCodeDetailMaintenanceService(IRepository repository, ISendMailProvider sendMail) : base(repository, sendMail) { }
public EmailServiceBase(ISendMailProvider provider, IMessagingMessageService msgService, IUnitOfWork unitOfWork) : base(unitOfWork) { this.Sender = provider; this.MessagingMessageService = msgService; }
/// <summary> /// Constructor /// </summary> /// <param name="repository"></param> /// <param name="sendMail"></param> public AppMenuItemMaintenanceService(IRepository repository, ISendMailProvider sendMail) : base(repository, sendMail) { }
/// <summary> /// Constructor /// </summary> /// <param name="repository"></param> /// <param name="sendMail"></param> public AppVariableMaintenanceService(IRepository repository, ISendMailProvider sendMail) : base(repository, sendMail) { }
private async Task <List <PayrollStampingResultDetail> > doWorkAsync(Overdraft overdraftToStamp, RoundUtil roundUtil, ZipCodeManager zipCodeManager, PayrollStampingParams payrollStampingParams, BlobStorageUtil blobStorageUtil, ISendMailProvider sendMailProvider, List <Incident> incidents, List <Inhability> inhabilities, List <EmployerFiscalInformation> employerFiscalInformations, List <PayrollCompanyConfiguration> payrollConfigurations) { var payrollStampingResultDetail = new PayrollStampingResultDetail(); var payrollStampingResultDetails = new List <PayrollStampingResultDetail>(); //Obtiene los xmls de los comprobantes segun la version de CFDI especificada IFiscalStamping fiscalStamping = FiscalStampingFactory.CreateInstance(payrollStampingParams.FiscalStampingVersion); //1. Get totals var overdraftResults = new OverdraftManager().GetTotals(overdraftToStamp, roundUtil); //1.1 Datetime for zipCode (var zipcode, var datetimeFromZipCode) = await zipCodeManager.GetZipCode(overdraftToStamp, payrollConfigurations.FirstOrDefault()); //2. Get XML - Creates comprobante var payrolllStampingDetail = payrollStampingParams.Detail .FirstOrDefault(detail => detail.OverdraftID == overdraftToStamp.ID); ICFDINomProvider cfdi = null; try { cfdi = fiscalStamping.CreateComprobante(new CreateComprobanteParams() { PayrollStampingDetail = payrolllStampingDetail, PayrollStampingParams = payrollStampingParams, Overdraft = overdraftToStamp, OverdraftResults = overdraftResults, PayrollCompanyConfiguration = payrollConfigurations.FirstOrDefault(), CFDIDateTimeStamp = datetimeFromZipCode, ZipCode = zipcode, RoundUtil = roundUtil, Incidents = incidents, Inhabilities = inhabilities }); } catch (Exception ex) { //Errores en validaciónes de armado / fiscales payrollStampingResultDetail.Message = ex.Message; payrollStampingResultDetail.PayrollStampingResultStatus = PayrollStampingResultStatus.Fail; payrollStampingResultDetail.HistoricEmployeeID = overdraftToStamp.HistoricEmployeeID.Value; payrollStampingResultDetail.EmployeeID = overdraftToStamp.HistoricEmployee.EmployeeID; payrollStampingResultDetail.OverdraftID = overdraftToStamp.ID; payrollStampingResultDetail.Overdraft = overdraftToStamp; payrollStampingResultDetail.PeriodDetailID = overdraftToStamp.PeriodDetailID; payrollStampingResultDetail.PeriodDetail = overdraftToStamp.PeriodDetail; payrollStampingResultDetails.Add(payrollStampingResultDetail); return(payrollStampingResultDetails); } //3. Sign XML var certificateCER = employerFiscalInformations.FirstOrDefault().CertificateCER; var certificateKey = employerFiscalInformations.FirstOrDefault().CertificateKEY; var certPassword = employerFiscalInformations.FirstOrDefault().CertificatePwd; //Decrypt (var certificatebytesCER, var certificatebytesKEY, var certPasswordResult) = Crypto(payrollStampingParams, certificateCER, certificateKey, certPassword); var stampingResult = fiscalStamping.SignDocument(cfdi, certificatebytesCER, certificatebytesKEY, certPasswordResult); //Set the employer stampingResult.EmployerRFC = payrollConfigurations.FirstOrDefault().RFC; //4. Stamp XML stampingResult = await fiscalStamping.StampDocumetAsync(stampingResult); if (stampingResult.WithErrors) { //error en el timbrado var errrorMessage = $"\nPara el empleado <strong>'{overdraftToStamp.HistoricEmployee.FullName}'</strong> encontramos los siguientes errores de timbrado: '{stampingResult.Details}'"; payrollStampingResultDetail.Message = errrorMessage; payrollStampingResultDetail.PayrollStampingResultStatus = PayrollStampingResultStatus.Fail; } else { //5. Return the complete XML stampingResult.XML = fiscalStamping.CreateXml <ICFDINomProvider>(stampingResult.CFDI, true); //5.5 Fill the result data payrollStampingResultDetail.Message = String.Empty; payrollStampingResultDetail.UUID = stampingResult.UUID; payrollStampingResultDetail.XML = stampingResult.XML; payrollStampingResultDetail.PayrollStampingResultStatus = PayrollStampingResultStatus.Success; //6. Fill the result data overdraftToStamp.UUID = stampingResult.UUID; overdraftToStamp.OverdraftStatus = OverdraftStatus.Stamped; //Fire and forget convertion and sending email fireAndForgetAsync(payrollStampingParams, overdraftToStamp, payrollConfigurations, blobStorageUtil, sendMailProvider, payrollStampingResultDetail.UUID, payrollStampingResultDetail.XML); //Fill the result object payrollStampingResultDetail.HistoricEmployeeID = overdraftToStamp.HistoricEmployeeID.Value; payrollStampingResultDetail.EmployeeID = overdraftToStamp.HistoricEmployee.EmployeeID; payrollStampingResultDetail.OverdraftID = overdraftToStamp.ID; payrollStampingResultDetail.Overdraft = overdraftToStamp; payrollStampingResultDetail.PeriodDetailID = overdraftToStamp.PeriodDetailID; payrollStampingResultDetail.PeriodDetail = overdraftToStamp.PeriodDetail; } payrollStampingResultDetails.Add(payrollStampingResultDetail); return(payrollStampingResultDetails); }
/// <summary> /// Constructor /// </summary> /// <param name="repository"></param> /// <param name="sendMail"></param> public SecurityRoleMaintenanceService(IRepository repository, ISendMailProvider sendMail) : base(repository, sendMail) { }
public OrderController(IRepository <Order> repository, ISendMailProvider sendMailProvider) : base(repository) { this._sendMailProvider = sendMailProvider; }
/// <summary> /// Constructor /// </summary> /// <param name="repository"></param> /// <param name="sendMail"></param> public AppEmailTemplateMaintenanceService(IRepository repository, ISendMailProvider sendMail) : base(repository, sendMail) { }
/// <summary> /// Constructor /// </summary> /// <param name="repository"></param> /// <param name="sendMail"></param> public SecurityUserLoginHistoryReportService(IRepository repository, ISendMailProvider sendMail) : base(repository, sendMail) { _reportOutputBaseFileName = String.Format("LoginHistoryReport-{0:yyyy-MM-dd_hh-mm-ss}", DateTime.Now); _rdlcReportAssemblyName = "CStore.Domain.dll"; _rdlcReportAssemblyManifestResourceName = "CStore.Domain.Domains.Reports.RDLC.SecurityUserLoginHistoryReport.rdlc"; }
private async Task sendMailAsync(Overdraft overdraftToStamp, Guid UUID, string XML, byte[] PDF, ISendMailProvider sendMailProvider, List <PayrollCompanyConfiguration> payrollCompanyConfigurations) { if (!String.IsNullOrEmpty(overdraftToStamp.HistoricEmployee.Email)) { var message = new StringBuilder(); message.Append($"Estimado(a) {overdraftToStamp.HistoricEmployee.FullName},"); message.AppendLine(); message.AppendLine("Por parte de tu empresa en la que estas colaborando te mandamos los datos de tu recibo de nómina."); message.AppendLine($"Periodo: <strong>{overdraftToStamp.HistoricEmployee.PeriodTypeDescription} {overdraftToStamp.PeriodDetail.InitialDate.ToShortDateString()} al {overdraftToStamp.PeriodDetail.FinalDate.ToShortDateString()}.</strong>"); message.AppendLine($"RFC Emisor: <strong>{payrollCompanyConfigurations.FirstOrDefault().RFC}</strong>"); message.AppendLine($"Razón Social: <strong>{payrollCompanyConfigurations.FirstOrDefault().SocialReason}</strong>"); message.AppendLine($"UUID: <strong>{UUID}</strong>"); var sendindParams = new SendMailParams() { HTMLContent = message.ToString(), SendMailAddresses = new List <SendMailAddress>() { new SendMailAddress() { Email = overdraftToStamp.HistoricEmployee.Email, Name = overdraftToStamp.HistoricEmployee.FullName } }, PlainContentText = message.ToString(), SendMailAttachments = new List <SendMailAttachment>() { new SendMailAttachment() { Attachment = Encoding.UTF8.GetBytes(XML), Filename = $"{UUID}.xml", TypeAttachment = TypeAttachment.XML }, }, Subject = "Cotorria - Envío de recibo de nómina", }; if (PDF != null) { sendindParams.SendMailAttachments.Add(new SendMailAttachment() { Attachment = PDF, Filename = $"{UUID}.pdf", TypeAttachment = TypeAttachment.PDF }); } await sendMailProvider.SendMailAsync(sendindParams); } }
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); }
/// <summary> /// Constructor /// </summary> /// <param name="repository"></param> /// <param name="sendMail"></param> public AppAnnouncementMaintenanceService(IRepository repository, ISendMailProvider sendMail) : base(repository, sendMail) { }
/// <summary> /// Constructor /// </summary> /// <param name="membershipProvider"></param> public RegistrationService(IRepository repository, ISendMailProvider sendMail) { _repository = repository; this._sendMail = sendMail; _httpContext = HttpContext.Current; }
/// <summary> /// Constructor /// </summary> /// <param name="repository"></param> /// <param name="sendMail"></param> public DomainEntityService(IRepository repository, ISendMailProvider sendMail) : base(repository, sendMail) { }
/// <summary> /// Constructor /// </summary> /// <param name="repository"></param> /// <param name="sendMail"></param> public SecurityUserMaintenanceService(IRepository repository, ISendMailProvider sendMail, IPasswordService passwordService) : base(repository, sendMail) { _passwordService = passwordService; }
/// <summary> /// Constructor /// </summary> /// <param name="repository"></param> /// <param name="sendMail"></param> public WebsiteDataEntityService(IRepository repository, ISendMailProvider sendMail) : base(repository, sendMail) { }
public WorkingEmailService(ISendMailProvider provider, IMessagingMessageService msgService, IUnitOfWork unitOfWork) : base(provider, msgService, unitOfWork) { }