/// <summary> /// /// </summary> /// <param name="UserId"></param> /// <returns></returns> public CartsVariantDTO GetCartByUserId(Guid UserId) { IEnumerable <CartVariantMapping> itemAtCart = dbContext.CartVariantMappings.Where(v => v.CartID == UserId).ToList(); Debug.WriteLine(dbContext.CartVariantMappings.Where(v => v.CartID == UserId).ToList()); CartsVariantDTO cartVariantDTO = new CartsVariantDTO(); cartVariantDTO.Items = cartVariantMapper.Map <IEnumerable <CartVariantMapping>, IEnumerable <CartVariantDTO> >(itemAtCart); return(cartVariantDTO); }
/// <summary> /// get the all product aviable in the cart /// </summary> /// <returns>view cart details</returns> public ActionResult GetCart() { Guid UserID = new Guid(Session["userId"].ToString()); CartBusiness cartBusiness = new CartBusiness(); CartsVariantDTO data = cartBusiness.GetCartByUserId(UserID); var cartViewConfig = new MapperConfiguration(cfg => { cfg.CreateMap <CartsVariantDTO, CartViewModel>(); cfg.CreateMap <CartVariantDTO, VariantCartViewModel>(); cfg.CreateMap <VariantDTO, VariantViewModel>(); cfg.CreateMap <ProductDTO, ProductViewModel>(); }); IMapper cartDataMapper = new Mapper(cartViewConfig); CartViewModel viewData = cartDataMapper.Map <CartsVariantDTO, CartViewModel>(data); return(View(viewData)); }
/// <summary> /// placeorder of user with address id and userId /// </summary> /// <param name="AddressId"></param> /// <param name="UserId"></param> /// <returns></returns> public bool PlacedOrder(Guid AddressId, Guid UserId) { VariantDTO variantDTO = new VariantDTO(); //validation for variant order //1.get the cart data bool addressVerfiyed = orderDatabase.IsVerfiyAddress(AddressId, UserId); double totalAmount = 0; if (addressVerfiyed) { try { CartsVariantDTO cartsData = cartOrderHelper.GetCartByUserId(UserId); foreach (CartVariantDTO variantAtCart in cartsData.Items) { //2.get each cart varinat data from varinat table variantDTO = cartOrderHelper.GetVariantDetails(variantAtCart.VariantID); //3.check all cart data inventory if (!cartOrderHelper.IsInventoryAvaiable(variantAtCart.Quantity, variantDTO.Inventory)) { throw new OutOfStockException(); } //3.orderlimit if (!cartOrderHelper.IsUserCanOrder(variantAtCart, variantDTO)) { throw new UserOrderLimitExceddException(); } variantAtCart.SellingPrice = variantDTO.ListingPrice - variantDTO.Discount; totalAmount = totalAmount + variantAtCart.SellingPrice * variantAtCart.Quantity; } //validation end OrderVariantDTO order = new OrderVariantDTO(); order.ItemOrders = cartsData; OrderDataDTO orderData = new OrderDataDTO(); orderData.DeliveryAddressID = AddressId; orderData.TotalAmount = totalAmount; orderData.isCancelled = "N"; bool isOrderPlaced = orderDatabase.PlacedOrder(UserId, orderData, order); if (isOrderPlaced) { foreach (CartVariantDTO variant in cartsData.Items) { Guid Id = variant.ID; bool t = cartOrderHelper.DeleteCartVariant(Id, UserId); } return(true); } else { return(false); } } catch (OutOfStockException) { return(false); } catch (UserOrderLimitExceddException) { return(false); } catch (Exception ex) { return(false); } } else { throw new UserDetailIsWrong(); } }