Exemplo n.º 1
0
        /// <summary>
        /// Generates an Email Record with a status of Pending to be sent by the Email Service
        /// </summary>
        /// <param name="receipt">Receipt email address (only one)</param>
        /// <param name="subject">Email subject</param>
        /// <param name="body">Email body (HTML)</param>
        /// <param name="username">Username that requested the email creation</param>
        /// <param name="employeeId">EmployeeId of the Username that requested the email creation</param>
        public CS_Email SaveEmail(string receipt, string subject, string body, string username, int? employeeId)
        {
            string senderEmail = string.Empty;
            SettingsModel model = new SettingsModel(_unitOfWork);

            string[] emailConfiguration = model.GetEmailConfiguration();
            senderEmail = string.Format("{0}@{1}", emailConfiguration[0], emailConfiguration[2]);

            CS_Email email = new CS_Email();
            email.Sender = senderEmail;
            email.Receipts = receipt;
            email.Subject = subject;
            email.Body = body;
            email.Status = (short)Globals.EmailService.Status.Pending;
            email.StatusDate = DateTime.Now;

            email.CreatedBy = username;
            email.CreationID = employeeId;
            email.CreationDate = DateTime.Now;

            email.ModifiedBy = username;
            email.ModificationID = employeeId;
            email.ModificationDate = DateTime.Now;

            email.Active = true;

            return _emailRepository.Add(email);
        }
Exemplo n.º 2
0
        /// <summary>
        /// Updates the Email status
        /// </summary>
        /// <param name="email">Email row</param>
        /// <param name="status">New Status</param>
        public CS_Email UpdateStatusEmail(CS_Email email, Globals.EmailService.Status status)
        {
            using (TransactionScope scope = new TransactionScope())
            {
                email.Status = (short)status;
                email.StatusDate = DateTime.Now;

                CS_Email emailReturn = _emailRepository.Update(email);

                Globals.CallCriteria.CallCriteriaEmailStatus callCriteriaStatus = Globals.CallCriteria.CallCriteriaEmailStatus.Sent;
                switch (status)
                {
                    case Globals.EmailService.Status.Pending:
                        callCriteriaStatus = Globals.CallCriteria.CallCriteriaEmailStatus.Pending;
                        break;
                    case Globals.EmailService.Status.Sent:
                        callCriteriaStatus = Globals.CallCriteria.CallCriteriaEmailStatus.Sent;
                        break;
                    case Globals.EmailService.Status.Error:
                        callCriteriaStatus = Globals.CallCriteria.CallCriteriaEmailStatus.Error;
                        break;
                    case Globals.EmailService.Status.ConfirmationReceived:
                        callCriteriaStatus = Globals.CallCriteria.CallCriteriaEmailStatus.ConfirmationReceived;
                        break;
                    case Globals.EmailService.Status.ConfirmedAndRead:
                        callCriteriaStatus = Globals.CallCriteria.CallCriteriaEmailStatus.ReadConfirmationReceived;
                        break;
                    default:
                        callCriteriaStatus = Globals.CallCriteria.CallCriteriaEmailStatus.Sent;
                        break;
                }

                CallLogModel model = new CallLogModel(_unitOfWork);

                model.UpdateEmailStatusByEmailId(emailReturn.ID, callCriteriaStatus);

                scope.Complete();

                return emailReturn;
            }
        }
        public void TestIfModelIsUpdatingEmailStatus()
        {
            // Arrange
            CS_Email email = new CS_Email()
            {
                ID = 1,
                Active = true,
                Status = (short)Globals.EmailService.Status.Pending
            };
            EmailModel model = new EmailModel(new FakeUnitOfWork());
            CS_Email updatedEmail = null;

            // Act
            updatedEmail = model.UpdateStatusEmail(email, Globals.EmailService.Status.Sent);

            // Assert
            Assert.IsNotNull(updatedEmail);
            Assert.AreEqual((short)Globals.EmailService.Status.Sent, updatedEmail.Status, "Error on Status field");
        }