Example #1
0
        /// <summary>
        /// Send an email to every user that still needs to close an order in Scala
        /// </summary>
        public static void SendEmails()
        {
            var ordersService = new OrdersWithCaeService(new AtlasDataContext(), new ScalaDataContext());
            var pendingOrders = GetPendingOrders(ordersService);
            var templatePath  = MailHelper.GetTemplatePath(EmailType.ClosePendingOrder);

            foreach (var pendingOrder in pendingOrders)
            {
                var invoiceNumber = GetScalaInvoiceNumber(pendingOrder);
                if (!ordersService.IsClosed(invoiceNumber, pendingOrder.OrderNumber, pendingOrder.OrderType))
                {
                    var emailData = new EmailDataDTO
                    {
                        OrderNumber   = pendingOrder.OrderNumber,
                        OrderDate     = pendingOrder.OrderDate,
                        ClientCode    = pendingOrder.ClientCode,
                        BussinessName = pendingOrder.BusinessName,
                        PurchaseOrder = pendingOrder.PurchaseOrderNumber,
                        ReceiptNumber = pendingOrder.InvoiceNumber,
                        ReceiptType   = pendingOrder.InvoiceType.ToString(),
                        EmailType     = EmailType.ClosePendingOrder,
                        DeliveryNotes = string.Join(" ", pendingOrder.InvoiceLines
                                                    .Select(x => x.DeliveryNoteNumber).Distinct().OrderBy(x => x)
                                                    .ToList())
                    };

                    if (!string.IsNullOrEmpty(pendingOrder.UserEmail))
                    {
                        MailHelper.Send(pendingOrder.UserEmail, ServicesResources.EMAIL_PENDING_SUBJECT, templatePath, emailData);
                    }
                }
            }
        }
Example #2
0
        /// <summary>
        /// Close orders in our database if it's already closed in Scala
        /// </summary>
        public static void CloseOrders()
        {
            try
            {
                var ordersService = new OrdersWithCaeService(new AtlasDataContext(), new ScalaDataContext());
                var pendingOrders = GetPendingOrders(ordersService);

                foreach (var pendingOrder in pendingOrders)
                {
                    var invoiceNumber = GetScalaInvoiceNumber(pendingOrder);
                    if (ordersService.IsClosed(invoiceNumber, pendingOrder.OrderNumber, pendingOrder.OrderType))
                    {
                        var transactionNumber = ordersService.GetTransactionNumber(invoiceNumber);
                        ordersService.CloseOrder(pendingOrder, transactionNumber);
                    }
                }
            }
            catch (DbEntityValidationException dbEx)
            {
                Exception raise = dbEx;
                foreach (var validationErrors in dbEx.EntityValidationErrors)
                {
                    foreach (var validationError in validationErrors.ValidationErrors)
                    {
                        string message = string.Format("{0}:{1}",
                                                       validationErrors.Entry.Entity.ToString(),
                                                       validationError.ErrorMessage);

                        // raise a new exception nesting
                        // the current instance as InnerException
                        raise = new InvalidOperationException(message, raise);
                    }
                }
                throw raise;
            }
            catch (Exception ex)
            {
                LogHelper.Log.Fatal(ex);
            }
        }
Example #3
0
        /// <summary>
        /// Get pending orders
        /// </summary>
        /// <param name="ordersService">Order service</param>
        /// <returns>A list of pending orders</returns>
        private static List <Invoice> GetPendingOrders(OrdersWithCaeService ordersService)
        {
            var userService = new UsersService(new AtlasDataContext(), new ScalaDataContext());

            return(ordersService.ListPending());
        }