Example #1
0
        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));
        }
Example #2
0
        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));
        }
Example #3
0
        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);
            }
        }
Example #4
0
        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);
            }
        }