public ActionResult QoutesGridViewPartialUpdate([ModelBinder(typeof(DevExpressEditorsBinder))] Jarcet.Qoute.Web.Models.Qoutes item) { var model = new object[0]; if (ModelState.IsValid) { try { // Insert here a code to update the item in your model unitOfWork.QoutesRepo.Update(item); unitOfWork.Save(); QouteNotifierService qouteNotifierService = new QouteNotifierService(unitOfWork.QoutesRepo.Get(m => m.Id == item.Id, includeProperties: "Clients,QouteDetails,Users,QouteDetails.Products"), item.Subject, item.Subject, User.Identity.GetEmail()); INotifierService notifier = new EmailNotifierService(qouteNotifierService); notifier.Send(); } catch (Exception e) { ViewData["EditError"] = e.Message; } } else { ViewData["EditError"] = "Please, correct all errors."; } return(PartialView("_QoutesGridViewPartial", model)); }
public ActionResult QoutesGridViewPartialAddNew([ModelBinder(typeof(DevExpressEditorsBinder))] Jarcet.Qoute.Web.Models.Qoutes item) { if (ModelState.IsValid) { try { item.Id = Guid.NewGuid().ToString(); foreach (var i in Session["QouteDetails"] as List <QouteDetails> ) { i.Products = null; item.QouteDetails.Add(i); } item.UserId = User.Identity.GetUserId(); unitOfWork.QoutesRepo.Insert(item); unitOfWork.Save(); QouteNotifierService qouteNotifierService = new QouteNotifierService(unitOfWork.QoutesRepo.Get(m => m.Id == item.Id, includeProperties: "Clients,QouteDetails,Users,QouteDetails.Products"), item.Subject, item.Subject, User.Identity.GetEmail()); INotifierService notifier = new EmailNotifierService(qouteNotifierService); notifier.Send(); } catch (Exception e) { ViewData["EditError"] = e.Message; } } else { ViewData["EditError"] = "Please, correct all errors."; } var model = unitOfWork.QoutesRepo.Get(includeProperties: "Clients"); return(PartialView("_QoutesGridViewPartial", model)); }
public bool MarkOrderAsDelivered(Guid orderId) { try { var orderSet = DreamerDbContext.Orders.Include(order => order.OrderShipment).Include(order => order.DreamerUser).Where(order => order.Id == orderId && order.IsValid).FirstOrDefault(); if (orderSet == null || orderSet.Status == Models.Enums.OrderStatus.Delivered) { return(false); } orderSet.Status = Models.Enums.OrderStatus.Delivered; orderSet.OrderShipment.DeliveryTime = DateTimeOffset.UtcNow; DreamerDbContext.SaveChanges(); EmailNotifierService.SendDeliveredSuccessfully(orderSet.DreamerUser.Email, orderSet.SerialNumber); return(true); } catch (Exception ex) { Log.Error(ex.Message); return(false); } }
public DetailedOrderDto CheckOutCart(Guid userId, string address) { try { OrderSet orderSet; var orderProducts = new List <OrderProductSet>(); var ShipmentToAddressCost = ShippingCostCalculatorService.Calculate(address); //Moving the user cart to new "PAID" order var userCart = DreamerDbContext.CartItems.Where(ci => ci.IsValid && ci.DreamerUserId == userId).Include(ci => ci.Product).AsEnumerable(); if (!userCart.Any()) { return(null); } foreach (var item in userCart) { var orderProductSet = new OrderProductSet { ProductId = item.ProductId, DiscountPercentage = item.Product.DiscountPercentage, OneItemPrice = item.Product.Price, Quantity = item.Quantity, DiscountValue = item.Product.Price * item.Quantity * item.Product.DiscountPercentage / 100 }; orderProductSet.NetPrice = (orderProductSet.OneItemPrice * orderProductSet.Quantity) - orderProductSet.DiscountValue; orderProducts.Add(orderProductSet); } orderSet = new OrderSet { PaymentDateTime = DateTimeOffset.UtcNow, DreamerUserId = userId, Status = Models.Enums.OrderStatus.Paid, NetItemsPrice = orderProducts.Sum(op => op.NetPrice), NetItemsDiscountValue = orderProducts.Sum(op => op.DiscountValue), OrderProducts = orderProducts, OrderShipment = new OrderShipmentSet { Address = address, ShipmentCost = ShipmentToAddressCost }, FreeDelivery = userCart.Any(ci => ci.Product.FreeDelivary) }; //One free-shipping product in the card is enough to make the whole card shipment for free if (orderSet.FreeDelivery) { orderSet.OrderShipment.ShipmentCost = 0; } else { orderSet.OrderShipment.ShipmentCost = ShipmentToAddressCost; } //Calculating the total for the order orderSet.Total = orderSet.NetItemsPrice + orderSet.OrderShipment.ShipmentCost; DreamerDbContext.Orders.Add(orderSet); DreamerDbContext.SaveChanges(); //Clearing the cart ClearCart(userId); //Send email notification var userEmail = DreamerDbContext.DreamerUsers.Where(user => user.Id == userId).Select(c => c.Email).Single(); if (EmailNotifierService.SendPaidSuccessfully(userEmail, orderSet)) { orderSet.EmailNotified = true; DreamerDbContext.SaveChanges(); } //Set as shipped the next day InternalHangfireService.EnqueueMarkOrderAsShipped(orderSet.Id); return(GetOrderDetails(orderSet.Id)); } catch (Exception ex) { Log.Error(ex.Message); return(null); } }