コード例 #1
0
        /// <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));
            }
        }
コード例 #2
0
        /// <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);
        }
コード例 #3
0
        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);
        }
コード例 #4
0
        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));
            }
        }
コード例 #5
0
        /// <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));
            }
        }