/// <summary> /// Add a new Mail Report. /// </summary> /// <param name="obj">MailReportDTO</param> /// <returns>ResponseDTO</returns> public ResponseDTO Add(MailReportDTO obj) { try { obj.RecordStatusId = 1; obj.CreatedDate = DateTime.Now; if (obj.PeriodDay == null) { obj.PeriodDay = string.Empty; } var entity = Mapper.MapSingle <MailReportDTO, MailReport>(obj); if (obj.ToEmails != null && obj.ToEmails.Length > 0) { foreach (var item in obj.ToEmails) { var mailReportUser = new MailReportUser { MailDefinitionId = item, ReceiverTypeId = (byte)Enums.ReceiverType.To, }; entity.MailReportUser.Add(mailReportUser); } } if (obj.CcEmails != null && obj.CcEmails.Length > 0) { foreach (var item in obj.CcEmails) { var mailReportUser = new MailReportUser { MailDefinitionId = item, ReceiverTypeId = (byte)Enums.ReceiverType.Cc, }; entity.MailReportUser.Add(mailReportUser); } } var result = _uow.MailReports.Add(entity); bool saveResult = _uow.Commit(); return(Success(result.MailReportId)); } catch (Exception ex) { return(Error(ex)); } }
/// <summary> /// Sends the mail report email. /// </summary> /// <param name="file">Excel file</param> /// <param name="mailReport">MailReport object</param> /// <returns>bool</returns> private List <bool> SendReportMail(byte[] file, MailReportDTO mailReport) { if (mailReport == null || mailReport.MailReportUserList == null) { return(null); } var company = _uow.Companies.Single(x => x.CompanyId != Guid.NewGuid()); // zaten toplamda bir tane company olacak var sendResult = new List <bool>(); using (var stream = new MemoryStream(file)) using (var attachment = new Attachment(stream, mailReport.MailReportName + ".xlsx")) { var ccList = mailReport.MailReportUserList.Where(x => x.ReceiverTypeId == (byte)Enums.ReceiverType.Cc); for (int i = 0; i < mailReport.MailReportUserList.Where(x => x.ReceiverTypeId == (byte)Enums.ReceiverType.To).Count(); i++) { var item = mailReport.MailReportUserList[i]; var mail = new MailDTO { Host = company.SmtpHost, Port = company.SmtpPort, UserName = company.SmtpUserName, Password = company.SmtpPassword, Subject = mailReport.Subject, Body = mailReport.BodyTemplate.Replace("#FullName#", item.RecipientName), Attachment = attachment, To = new List <string> { item.EmailAddress }, }; if (i == 0 && ccList != null && ccList.Count() > 0) { mail.Cc = ccList.Select(x => x.EmailAddress).ToList(); } var mailSendResult = (bool)_mailService.SendMail(mail).Result; sendResult.Add(mailSendResult); } } return(sendResult); }
private List <SentMailDTO> GetAllReceivers(MailReportDTO obj, DateTime sentDate) { var sentMails = new List <SentMailDTO>(); if (obj == null || obj.MailReportUserList == null) { return(sentMails); } obj.MailReportUserList.ForEach(x => sentMails.Add(new SentMailDTO { MailReportId = obj.MailReportId, Subject = obj.Subject, Body = obj.BodyTemplate, EmailAddress = x.EmailAddress, SentDate = sentDate })); return(sentMails); }
public IActionResult Edit([FromBody] MailReportDTO request) { var result = _service.Edit(request); switch (result.ResultMessage) { case Enums.ResponseMessage.OK: return(StatusCode(StatusCodes.Status200OK, result.Result)); case Enums.ResponseMessage.ERROR: return(StatusCode(StatusCodes.Status500InternalServerError, result.Exception)); case Enums.ResponseMessage.NOTFOUND: return(StatusCode(StatusCodes.Status404NotFound)); case Enums.ResponseMessage.UNAUTHORIZED: return(StatusCode(StatusCodes.Status401Unauthorized)); default: return(StatusCode(StatusCodes.Status404NotFound)); } }
/// <summary> /// Lists all mail reports /// </summary> /// <returns>ResponseDTO</returns> public ResponseDTO List() { try { var entities = _uow.MailReports.Set().Include(x => x.RecordStatus).Include(x => x.PeriodType).ToList(); if (entities.Count == 0) { return(NotFound()); } var list = new List <MailReportDTO>(); foreach (var item in entities) { var obj = new MailReportDTO { MailReportId = item.MailReportId, MailReportName = item.MailReportName, PeriodTypeName = item.PeriodType.PeriodTypeName, RecordStatusName = item.RecordStatus.RecordStatusName, CreatedDate = item.CreatedDate, PeriodValue = item.PeriodValue, PeriodTypeId = item.PeriodTypeId }; list.Add(obj); } return(Success(list)); } catch (Exception ex) { return(Error(ex)); } }