Exemplo n.º 1
0
        public OrderConfirmationDTO PrintOrderDetails(int orderId)
        {
            var currentUser = ClaimsPrincipal.Current.Identity.Name;

            if (currentUser != null)
            {
                UserService          userService = new UserService();
                var                  user        = userService.GetUser(currentUser);
                OrderConfirmationDTO orderDetail = new OrderConfirmationDTO();

                bool vBuyHighlevelusers = userService.VBuyHighLevelUsers(user.Username);
                var  orderDTOObj        = _shoppingCartRepository.GetOrder(orderId);
                var  retailerInfo       = _unitOfWork.SellerRepository.GetRetailerInfo(currentUser);
                if (vBuyHighlevelusers)
                {
                    orderDetail.OrderDetails     = orderDTOObj;
                    orderDetail.OrderItemDetails = _shoppingCartRepository.GetOrderedItemlist(orderId);
                    orderDetail.ShippingAddress  = _shoppingCartRepository.GetAddress(orderDTOObj.ShippingAddressId);
                    User buyer = new UserService().GetUser(orderDTOObj.CustomerId);
                    orderDetail.CustomerName  = buyer.FirstName;
                    orderDetail.CustomerEmail = buyer.Email;
                    //send order confirmation email
                }
                else
                {
                    if (retailerInfo.Branches != null && retailerInfo.Branches.Count > 0)
                    {
                        var branchId = retailerInfo.Branches[0].BranchId;

                        orderDetail.OrderDetails     = orderDTOObj;
                        orderDetail.OrderItemDetails = _shoppingCartRepository.GetOrderedItemlist(orderId, branchId);
                        orderDetail.ShippingAddress  = _shoppingCartRepository.GetAddress(orderDTOObj.ShippingAddressId);

                        User buyer = new UserService().GetUser(orderDTOObj.CustomerId);
                        orderDetail.CustomerName  = buyer.FirstName;
                        orderDetail.CustomerEmail = buyer.Email;
                    }
                }
                if (vBuyHighlevelusers || (retailerInfo.Branches != null && retailerInfo.Branches.Count > 0))
                {
                    decimal subOrderTotal      = 0;
                    decimal subShippingCharges = 0;
                    foreach (OrderItemResultSet result in orderDetail.OrderItemDetails)
                    {
                        subOrderTotal      = subOrderTotal + result.Price;
                        subShippingCharges = subShippingCharges + result.ShippingCharges;
                    }
                    orderDetail.OrderDetails.OrderSubtotalInclTax = subOrderTotal;
                    orderDetail.OrderDetails.OrderTotal           = orderDetail.OrderDetails.OrderSubtotalInclTax + subShippingCharges;
                }

                orderDetail.OrderDetails.OrderStatus = OrderHelper.GetEnumDescription((Enums.OrderStatus)orderDetail.OrderDetails.OrderStatusId);

                return(orderDetail);
            }
            return(null);
        }
Exemplo n.º 2
0
        public ActionResult OrderInfo(CheckoutViewModel checkoutViewModel)
        {
            try
            {
                if (ModelState.IsValid)
                {
                    var userCookie = CookieManager.GetUserCookie();

                    var userEmail = userCookie[Constants.COOKIE_KEY_USER_SUB_KEY_USER_EMAIL];

                    //SmartyStreets address validation
                    #region SmartyStreets Address Validation
                    var client = new ClientBuilder(Constants.SMARTY_STREETS_AUTHENICATION_ID, Constants.SMARTY_STREETS_AUTHENICATION_TOKEN).BuildUsStreetApiClient();

                    var lookup = new Lookup
                    {
                        Street  = string.IsNullOrWhiteSpace(checkoutViewModel.AptSuiteEtc) ? checkoutViewModel.Address : string.Format("{0} {1}", checkoutViewModel.Address, checkoutViewModel.AptSuiteEtc),
                        City    = checkoutViewModel.City,
                        State   = checkoutViewModel.State,
                        ZipCode = checkoutViewModel.ZipCode
                    };

                    client.Send(lookup);

                    var candidates = lookup.Result;

                    if (candidates.Count == 0)
                    {
                        ModelState.AddModelError("addessError", "Invalid address");
                        return(View(checkoutViewModel));
                    }
                    #endregion

                    var candidateReturnFromAddressValidation = candidates[0];

                    //create order using model information
                    Order order = new Order();
                    order.Email     = userEmail;
                    order.FirstName = checkoutViewModel.FirstName;
                    order.LastName  = checkoutViewModel.LastName;
                    order.Address   = candidateReturnFromAddressValidation.DeliveryLine1;
                    order.City      = candidateReturnFromAddressValidation.Components.CityName;
                    order.State     = candidateReturnFromAddressValidation.Components.State;
                    order.ZipCode   = candidateReturnFromAddressValidation.LastLine.Split(' ')[2]; //Zip code returned from SmartyStreets address validation

                    var userCartItems = services.CartService.GetUserCartItems(userEmail, Constants.DATABASE_TABLE_PRODUCTS);
                    order.SubTotal = Math.Round(userCartItems.Sum(ci => ci.Product.Price * ci.Quantity), 2);

                    order.ShippingOptionID = checkoutViewModel.ShippingOptionID;
                    var shippingOption = services.ShippingService.GetShippingOption(checkoutViewModel.ShippingOptionID);

                    //calculate sales tax and order total based on whether or not intital selected shipping option is free
                    if (shippingOption.Price.HasValue)
                    {
                        order.SalesTax = Math.Round((order.SubTotal + shippingOption.Price.Value) * (decimal).07, 2);
                        order.Total    = order.SubTotal + order.SalesTax.Value + shippingOption.Price.Value;
                    }
                    else
                    {
                        order.SalesTax = Math.Round(order.SubTotal * (decimal).07, 2);
                        order.Total    = order.SubTotal + order.SalesTax.Value;
                    }

                    order.OrderDate = DateTime.Now;
                    services.OrderService.AddOrder(order);

                    foreach (var cartItem in userCartItems)
                    {
                        //create order detail, relating to newly created order, of cart item
                        OrderDetail orderDetail = new OrderDetail();
                        orderDetail.OrderID      = order.OrderID;
                        orderDetail.ProductID    = cartItem.ProductID;
                        orderDetail.ProductPrice = cartItem.Product.Price;
                        orderDetail.Quantity     = cartItem.Quantity;

                        //add order detail to database
                        services.OrderDetailService.AddOrderDetail(orderDetail);

                        //remove cart items from database once order detail for cart items is created
                        services.CartService.DeleteCartItem(cartItem);
                    }

                    //set properties of order confirmation dto
                    OrderConfirmationDTO orderConfirmationDto = new OrderConfirmationDTO();
                    orderConfirmationDto.Candidate            = candidateReturnFromAddressValidation;
                    orderConfirmationDto.FirstName            = checkoutViewModel.FirstName;
                    orderConfirmationDto.LastName             = checkoutViewModel.LastName;
                    orderConfirmationDto.OrderDate            = DateTime.Now;
                    orderConfirmationDto.CartItems            = userCartItems;
                    orderConfirmationDto.ShippingOptionID     = shippingOption.ShippingOptionID;
                    orderConfirmationDto.ShippingOptionName   = shippingOption.Name;
                    orderConfirmationDto.ShippingPrice        = shippingOption.Price;
                    orderConfirmationDto.ExpectedDeliveryDays = shippingOption.ExpectedDeliveryDays;

                    //redirect to order confirmation view
                    return(View("OrderConfirmation", orderConfirmationDto));
                }
                else //re-display page with validation errors
                {
                    var userCookie = CookieManager.GetUserCookie();

                    //use email stored in cookie to create new CheckoutViewModel instance and pass it into view
                    return(View(GetNewCheckoutViewModel(userCookie[Constants.COOKIE_KEY_USER_SUB_KEY_USER_EMAIL])));
                }
            }
            catch (Exception ex)
            {
                ExceptionManager.LogException(ex, Path.GetFileName(Request.PhysicalPath));
                return(RedirectToAction(Constants.CONTROLLER_ACTION_INDEX, Constants.CONTROLLER_ERROR));
            }
        }
Exemplo n.º 3
0
        public OrderConfirmationDTO GetOrderConfirmationDetails(int orderId, string userName)
        {
            if (orderId > 0)
            {
                var currentUser = ClaimsPrincipal.Current.Identity.Name;
                if (currentUser != null)
                {
                    UserService          userService = new UserService();
                    var                  user        = userService.GetUser(currentUser);
                    OrderConfirmationDTO orderDetail = new OrderConfirmationDTO();
                    if (user.Username.ToLower() == userName.ToLower())
                    {
                        var orderDTOObj = _shoppingCartRepository.GetOrder(user.UserId, orderId);
                        orderDetail.OrderDetails     = orderDTOObj;
                        orderDetail.OrderItemDetails = _shoppingCartRepository.GetOrderedItemlist(orderId);
                        orderDetail.ShippingAddress  = _shoppingCartRepository.GetAddress(orderDTOObj.ShippingAddressId);
                        orderDetail.CustomerName     = user.FirstName;
                        orderDetail.CustomerEmail    = user.Email;

                        //send order confirmation email
                        StringBuilder trConfirmation = new StringBuilder();
                        foreach (var item in orderDetail.OrderItemDetails)
                        {
                            trConfirmation.Append("<tr>");

                            trConfirmation.Append("<td width='30%'>");
                            trConfirmation.Append(item.Name + "<br> store: " + item.Branch);
                            if (item.SelectedSize != null && !string.IsNullOrEmpty(item.SelectedSize))
                            {
                                trConfirmation.Append(" / Size: " + item.SelectedSize);
                            }

                            trConfirmation.Append("</td>");

                            trConfirmation.Append("<td>");
                            trConfirmation.Append(item.Quantity);
                            trConfirmation.Append("</td>");


                            trConfirmation.Append(" <td align='right'>");
                            trConfirmation.Append(item.UnitPrice);
                            trConfirmation.Append(" </td>");

                            trConfirmation.Append(" <td align='right'>");
                            trConfirmation.Append(item.Price);
                            trConfirmation.Append(" </td>");



                            trConfirmation.Append(" </tr>");
                        }
                        try
                        {
                            VSOnline.VSECommerce.Domain.Helper.MailHelper.SendOrderConfirmationMail(orderDetail.CustomerEmail,
                                                                                                    orderId.ToString(), trConfirmation.ToString(), orderDetail.OrderDetails.OrderSubtotalInclTax, orderDetail.OrderDetails.OrderShippingCharges,
                                                                                                    orderDetail.OrderDetails.OrderDiscount, orderDetail.OrderDetails.OrderTotal, orderDetail.CustomerName
                                                                                                    , orderDetail.ShippingAddress.Address1, orderDetail.ShippingAddress.Address2, orderDetail.ShippingAddress.City
                                                                                                    , orderDetail.ShippingAddress.State, orderDetail.ShippingAddress.PostalCode, orderDetail.ShippingAddress.PhoneNumber);

                            VSOnline.VSECommerce.Domain.Helper.MessageHelper.SendOrderConfirmationSMS(orderId, orderDetail.ShippingAddress.PhoneNumber);
                        }
                        catch
                        {
                        }
                    }

                    return(orderDetail);
                }
            }
            return(null);
        }
 public ActionResult Success(OrderConfirmationDTO orderConfirmationDTO)
 {
     return(View());
 }