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); }
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)); } }
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()); }