Exemple #1
0
        public async Task <JsonResult> SaveData(OrderChangeViewModel orders)
        {
            if (orders.updated != null)
            {
                foreach (var item in orders.updated)
                {
                    _orderService.Update(item);
                }
            }
            if (orders.deleted != null)
            {
                foreach (var item in orders.deleted)
                {
                    _orderService.Delete(item);
                }
            }
            if (orders.inserted != null)
            {
                foreach (var item in orders.inserted)
                {
                    _orderService.Insert(item);
                }
            }
            await _unitOfWork.SaveChangesAsync();

            return(Json(new { success = true }, JsonRequestBehavior.AllowGet));
        }
Exemple #2
0
        public ActionResult SaveData(OrderChangeViewModel orders)
        {
            if (orders.updated != null)
            {
                foreach (var updated in orders.updated)
                {
                    _orderService.Update(updated);
                }
            }
            if (orders.deleted != null)
            {
                foreach (var deleted in orders.deleted)
                {
                    _orderService.Delete(deleted);
                }
            }
            if (orders.inserted != null)
            {
                foreach (var inserted in orders.inserted)
                {
                    _orderService.Insert(inserted);
                }
            }
            _unitOfWork.SaveChanges();

            return(Json(new { Success = true }, JsonRequestBehavior.AllowGet));
        }
        public async Task <JsonResult> SaveDataAsync(OrderChangeViewModel orders)
        {
            if (orders == null)
            {
                throw new ArgumentNullException(nameof(orders));
            }
            if (this.ModelState.IsValid)
            {
                if (orders.updated != null)
                {
                    foreach (var item in orders.updated)
                    {
                        this.orderService.Update(item);
                    }
                }
                if (orders.deleted != null)
                {
                    foreach (var item in orders.deleted)
                    {
                        this.orderService.Delete(item);
                    }
                }
                if (orders.inserted != null)
                {
                    foreach (var item in orders.inserted)
                    {
                        this.orderService.Insert(item);
                    }
                }
                try
                {
                    var result = await this.unitOfWork.SaveChangesAsync();

                    return(this.Json(new { success = true, result = result }, JsonRequestBehavior.AllowGet));
                }
                catch (System.Data.Entity.Validation.DbEntityValidationException e)
                {
                    var errormessage = string.Join(",", e.EntityValidationErrors.Select(x => x.ValidationErrors.FirstOrDefault()?.PropertyName + ":" + x.ValidationErrors.FirstOrDefault()?.ErrorMessage));
                    return(this.Json(new { success = false, err = errormessage }, JsonRequestBehavior.AllowGet));
                }
                catch (Exception e)
                {
                    return(this.Json(new { success = false, err = e.GetBaseException().Message }, JsonRequestBehavior.AllowGet));
                }
            }
            else
            {
                var modelStateErrors = string.Join(",", this.ModelState.Keys.SelectMany(key => this.ModelState[key].Errors.Select(n => n.ErrorMessage)));
                return(this.Json(new { success = false, err = modelStateErrors }, JsonRequestBehavior.AllowGet));
            }
        }
        public static OrderHistoryViewModel GetByOrderId(IUnitOfWork db,
                                                         ILogService log,
                                                         IWeightService weightService,
                                                         string orderId)
        {
            DTOOrder order = null;

            if (!String.IsNullOrEmpty(orderId))
            {
                orderId = orderId.RemoveWhitespaces();
                var orderNumber = OrderHelper.RemoveOrderNumberFormat(orderId);
                var filter      = new OrderSearchFilter()
                {
                    EqualOrderNumber = orderNumber,
                    IncludeMailInfos = true,
                    IncludeNotify    = false,

                    UnmaskReferenceStyles = false,
                };

                order = db.ItemOrderMappings
                        .GetFilteredOrdersWithItems(weightService, filter)
                        .FirstOrDefault();
            }

            if (order == null)
            {
                return(null);
            }
            else
            {
                var anotherBuyerOrders = new List <OrderLinkViewModel>();
                if (!String.IsNullOrEmpty(order.BuyerEmail))
                {
                    anotherBuyerOrders = db.Orders.GetAll().Where(o => o.BuyerEmail == order.BuyerEmail)
                                         .ToList()
                                         .Where(o => o.Id != order.Id)
                                         .OrderByDescending(o => o.OrderDate)
                                         .Select(o => new OrderLinkViewModel()
                    {
                        OrderId       = o.Id,
                        OrderNumber   = o.AmazonIdentifier,
                        OrderDate     = o.OrderDate,
                        OrderStatus   = o.OrderStatus,
                        Market        = o.Market,
                        MarketplaceId = o.MarketplaceId
                    })
                                         .ToList();
                }

                var comments = db.OrderComments.GetByOrderIdDto(order.Id).ToList();

                var emails = db.Emails.GetAllWithOrder(new EmailSearchFilter()
                {
                    OrderId = orderId
                }).ToList();

                var returnRequests = db.ReturnRequests.GetAll()
                                     .OrderByDescending(r => r.CreateDate)
                                     .Select(r => new ReturnRequestDTO()
                {
                    OrderNumber      = r.OrderNumber,
                    ReceiveDate      = r.ReceiveDate,
                    ItemName         = r.ItemName,
                    CustomerComments = r.CustomerComments,
                    Details          = r.Details,
                    CreateDate       = r.CreateDate,
                    Reason           = r.Reason
                })
                                     .Where(r => r.OrderNumber == order.OrderId)
                                     .ToList();

                var refundRequests = RefundViewModel.GetByOrderId(db, order.OrderId);

                var labels = order.ShippingInfos
                             .Where(i => !String.IsNullOrEmpty(i.LabelPath)
                                    //|| i.LabelPurchaseResult != null //NOTE: in case when bag system shows user issue (keeped twice shippings with labels)
                                    )
                             .ToList();
                labels.AddRange(order.MailInfos);


                var address = order.GetAddressDto();

                var changes = db.OrderChangeHistories.GetByOrderIdDto(order.Id)
                              .ToList()
                              .OrderByDescending(ch => ch.ChangeDate)
                              .Select(ch => new OrderChangeViewModel(ch, emails))
                              .Where(ch => ch.ChangeType != OrderChangeTypes.None) //NOTE: Skipped empty
                              .ToList();

                changes.Add(OrderChangeViewModel.BuildCreateOrderChange(order));
                changes.AddRange(comments.Select(c => new OrderChangeViewModel(c)).ToList());
                changes.AddRange(emails.Select(e => new OrderChangeViewModel(e)).ToList());
                changes.AddRange(labels.SelectMany(l => OrderChangeViewModel.BuildChanges(l)).ToList());
                changes.AddRange(refundRequests.Select(r => new OrderChangeViewModel(r)).ToList());
                changes.AddRange(returnRequests.Select(r => new OrderChangeViewModel(r)).ToList());

                return(new OrderHistoryViewModel
                {
                    //Notes =  string.Format("{0} {1}", order.OrderId, itemsNotes),
                    OrderID = order.OrderId,
                    OrderEntityId = order.Id,
                    OrderDate = order.OrderDate,
                    Market = (MarketType)order.Market,
                    MarketplaceId = order.MarketplaceId,

                    WeightLb = (int)Math.Floor(order.WeightD / 16),
                    WeightOz = order.WeightD % 16,
                    TotalPrice = order.TotalPrice,
                    PriceCurrency = PriceHelper.FormatCurrency(order.TotalPriceCurrency),

                    Items = order.Items.Select(i => new OrderItemViewModel(i, false, false)).ToList(),
                    Changes = changes.OrderByDescending(c => c.ChangeDate).ToList(),

                    AnotherOrders = anotherBuyerOrders,

                    ToAddress = new AddressViewModel(address),
                });
            }
        }