Пример #1
0
        /// <summary>
        /// Binds the order invoice product category to model.
        /// </summary>
        /// <param name="orderInvoiceDetail">The order invoice detail.</param>
        /// <param name="scheme">The scheme.</param>
        /// <param name="productImageModel">The product image model.</param>
        /// <returns></returns>
        public static OrderInvoiceDetailModel BindOrderInvoiceProductSizeToModel(OrderInvoiceDetailModel orderInvoiceDetail, List <ProductSizeDetail> productSizeDetails, List <SizeDetail> sizeDetails)
        {
            if (orderInvoiceDetail != null)
            {
                foreach (var item in orderInvoiceDetail.ProductDetails)
                {
                    var size = sizeDetails.Where(x => x.SizeFK == DBHelper.ParseInt64(item.SizeId)).ToList();
                    if (size != null)
                    {
                        string sizeRatio = "";
                        foreach (var cat in size)
                        {
                            sizeRatio += cat.Name + "/";
                        }
                        sizeRatio  = sizeRatio.TrimEnd('/');
                        sizeRatio += " - ";

                        var sizeDetail = productSizeDetails.Where(x => x.ProductFK == DBHelper.ParseInt64(item.ProductId)).ToList();
                        if (sizeDetail != null)
                        {
                            foreach (var cat in sizeDetail)
                            {
                                sizeRatio += cat.Name + "/";
                            }
                            sizeRatio = sizeRatio.TrimEnd('/');
                        }

                        item.SizeRatio = sizeRatio;
                    }
                }
            }
            return(orderInvoiceDetail);
        }
Пример #2
0
        public IActionResult EmailOrderInvoice(GetOrderInvoiceDetailModel model)
        {
            try
            {
                if (ModelState.IsValid)
                {
                    var    header      = this.Request.Headers;
                    var    authToken   = header["Authorization"];
                    var    jwt         = authToken[0].Replace("Bearer ", "");
                    var    handler     = new JwtSecurityTokenHandler();
                    var    token       = handler.ReadJwtToken(jwt);
                    var    loginUserId = DBHelper.ParseInt32(token.Payload["UserId"]);
                    string scheme      = this.Request.Scheme;
                    scheme += "://" + this.Request.Host + this.Request.PathBase;

                    var orderInvoiceDetail = iOrderInvoice.GetOrderInvoiceDetail(DBHelper.ParseInt64(model.orderInvoiceId));
                    if (orderInvoiceDetail != null)
                    {
                        PromoCode promoCode = null;
                        if (orderInvoiceDetail[0].OrderInvoice.DiscountAmount > 0)
                        {
                            promoCode = iPromoCode.GetPromocodeDetail(DBHelper.ParseInt64(orderInvoiceDetail[0].OrderInvoice.Order.PromocodeFK));
                        }
                        OrderInvoiceDetailModel orderInvoiceDetailList = OrderInvoiceHelper.BindOrderInvoiceDetailModel(orderInvoiceDetail, promoCode);
                        List <long>             productIds             = OrderInvoiceHelper.GetProductIds(orderInvoiceDetailList);
                        List <ProductImage>     productImages          = iProduct.GetProductImagesByProductIds(productIds);
                        orderInvoiceDetailList = OrderInvoiceHelper.BindOrderInvoiceDetailImageToModel(orderInvoiceDetailList, scheme, productImages);
                        var adminUserAddressDetails = iOrderInvoice.GetAdminUserAddressDetails(loginUserId);
                        orderInvoiceDetailList.AdminUserDetails = adminUserAddressDetails;
                        if (orderInvoiceDetailList != null)
                        {
                            var    HostingPath         = env.ContentRootPath;
                            string clientEmail         = config.GetValue <string>("app_settings:ClientEmail");
                            string clientEmailPassword = config.GetValue <string>("app_settings:ClientEmailPassword");
                            string port     = config.GetValue <string>("app_settings:Port");
                            string mailHost = config.GetValue <string>("app_settings:SMTPURL");
                            string host     = this.Request.Host.Value;
                            OrderHelper.SendInvoice(orderInvoiceDetailList.Email, orderInvoiceDetailList, DBHelper.ParseString(HostingPath), clientEmail, clientEmailPassword, port, mailHost, host, scheme);
                        }
                        return(Ok(ResponseHelper.Success(orderInvoiceDetailList)));
                    }
                    else
                    {
                        return(Ok(ResponseHelper.Error(MessageConstants.DataNotFound)));
                    }
                }
                else
                {
                    return(Ok(ResponseHelper.Error(MessageConstants.CompulsoryData)));
                }
            }
            catch (Exception ex)
            {
                LogHelper.ExceptionLog(ex.Message + "  :::::  " + ex.StackTrace);
                return(Ok(ResponseHelper.Error(ex.Message)));
            }
        }
Пример #3
0
        private static string GetOrderInvoiceMailString(OrderInvoiceDetailModel orderInvoiceDetailModel, string hostPath)
        {
            var    hostingPath = hostPath;
            string path        = string.Concat(hostingPath, "/" + Constants.InvoiceDetailPath);
            string logoPath    = string.Concat(hostingPath, "/" + Constants.LogoPath);
            string html        = string.Empty;
            string tablepath   = string.Concat(hostingPath, "/" + Constants.InvoiceProductsPath);

            if (System.IO.File.Exists(path))
            {
                html = System.IO.File.ReadAllText(path);
                html = html.Replace("##COMPANYLOGO##", logoPath);
                html = html.Replace("##ADMIN_USERNAME##", orderInvoiceDetailModel.AdminUserDetails.FirstName);
                html = html.Replace("##ADMIN_Address1##", orderInvoiceDetailModel.AdminUserDetails.Address1);
                html = html.Replace("##ADMIN_Address2##", orderInvoiceDetailModel.AdminUserDetails.Address2);
                html = html.Replace("##ADMIN_User_COUNTRY##", orderInvoiceDetailModel.AdminUserDetails.CountryName);
                html = html.Replace("##ADMIN_User_CITY##", orderInvoiceDetailModel.AdminUserDetails.City);
                html = html.Replace("##ADMIN_USER_STATE##", orderInvoiceDetailModel.AdminUserDetails.StateName);
                html = html.Replace("##ADMIN_USER_ZIPCODE##", orderInvoiceDetailModel.AdminUserDetails.Zipcode);
                html = html.Replace("##SHIPPING_CHARGE##", orderInvoiceDetailModel.ShippingCharges);
                html = html.Replace("##PRODUCT_VAT##", orderInvoiceDetailModel.TotalGSTAmount);

                html = html.Replace("##USERNAME##", orderInvoiceDetailModel.FirstName + " !");
                html = html.Replace("##ADDRESS1##", orderInvoiceDetailModel.Address1);
                if (!string.IsNullOrEmpty(orderInvoiceDetailModel.Address2))
                {
                    html = html.Replace("##ADDRESS2##", orderInvoiceDetailModel.Address2);
                }

                html = html.Replace("##CITY##", orderInvoiceDetailModel.City);
                html = html.Replace("##COUNTRY##", orderInvoiceDetailModel.Country);
                html = html.Replace("##STATE##", orderInvoiceDetailModel.State);
                html = html.Replace("##ZIPCODE##", orderInvoiceDetailModel.Zipcode);
                //string convertDate = DateTime.ParseExact(orderInvoiceDetailModel.OrderDate, "dd-MM-yyyy", CultureInfo.InvariantCulture).ToString("MM/dd/yyyy", CultureInfo.InvariantCulture);
                orderInvoiceDetailModel.OrderDate = DBHelper.ParseString(Convert.ToDateTime(orderInvoiceDetailModel.OrderDate).ToString(Constants.DateFormat));
                html = html.Replace("##ORDER_DATE##", orderInvoiceDetailModel.OrderDate);
                html = html.Replace("##ORDER_NUMBER##", orderInvoiceDetailModel.PONumber);

                html = html.Replace("##PAYBALE_AMOUNT##", orderInvoiceDetailModel.PayableAmount);
                html = html.Replace("##ORDER_STATUS##", orderInvoiceDetailModel.OrderStatus);
                string FinalTable = string.Empty;
                foreach (var item in orderInvoiceDetailModel.ProductDetails)
                {
                    string ProductTable = System.IO.File.ReadAllText(tablepath);
                    ProductTable = ProductTable.Replace("##PRODUCT_IMAGE##", item.Image);
                    ProductTable = ProductTable.Replace("##PRODUCT_NAME##", item.Name);
                    ProductTable = ProductTable.Replace("##PRODUCT_GROUP##", item.SizeRatio);
                    ProductTable = ProductTable.Replace("##PRODUCT_QTY##", item.Quantity);
                    ProductTable = ProductTable.Replace("##PRODUCT_UNITPRICE##", item.Price);
                    ProductTable = ProductTable.Replace("##PRODUCT_TOTAL##", item.Total);
                    FinalTable  += ProductTable;
                }
                html = html.Replace("###ProductTable###", FinalTable);
            }
            return(html);
        }
Пример #4
0
        /// <summary>
        /// Gets the size ids.
        /// </summary>
        /// <param name="orderInvoiceDetail">The order invoice detail.</param>
        /// <returns></returns>
        public static List <long> GetSizeIds(OrderInvoiceDetailModel orderInvoiceDetail)
        {
            List <long> sizeIds = new List <long>();

            if (orderInvoiceDetail != null)
            {
                foreach (var item in orderInvoiceDetail.ProductDetails)
                {
                    sizeIds.Add(DBHelper.ParseInt64(item.SizeId));
                }
            }
            return(sizeIds);
        }
Пример #5
0
 /// <summary>
 /// Binds the order invoice detail image to model.
 /// </summary>
 /// <param name="orderInvoiceDetail">The order invoice detail.</param>
 /// <param name="scheme">The scheme.</param>
 /// <param name="productImageModel">The product image model.</param>
 /// <returns></returns>
 public static OrderInvoiceDetailModel BindOrderInvoiceDetailImageToModel(OrderInvoiceDetailModel orderInvoiceDetail, string scheme, List <ProductImage> productImageModel)
 {
     if (orderInvoiceDetail != null)
     {
         foreach (var item in orderInvoiceDetail.ProductDetails)
         {
             var image = productImageModel.Where(x => x.ProductColor.ProductFK == DBHelper.ParseInt64(item.ProductId) && x.ProductColorFK == DBHelper.ParseInt64(item.ColorId)).FirstOrDefault();
             if (image != null)
             {
                 item.Image = scheme + Constants.ProductImagesPath.Replace(@"\", "/") + "/" + image.Image;
             }
         }
     }
     return(orderInvoiceDetail);
 }
Пример #6
0
        public IActionResult OrderInvoiceDetail(GetOrderInvoiceDetailModel model)
        {
            try
            {
                if (ModelState.IsValid)
                {
                    string scheme = this.Request.Scheme;
                    scheme += "://" + this.Request.Host + this.Request.PathBase;

                    var orderInvoiceDetail = iOrderInvoice.GetOrderInvoiceDetail(DBHelper.ParseInt64(model.orderInvoiceId));
                    if (orderInvoiceDetail != null)
                    {
                        PromoCode promoCode = null;
                        if (orderInvoiceDetail[0].OrderInvoice.DiscountAmount > 0)
                        {
                            promoCode = iPromoCode.GetPromocodeDetail(DBHelper.ParseInt64(orderInvoiceDetail[0].OrderInvoice.Order.PromocodeFK));
                        }
                        OrderInvoiceDetailModel orderInvoiceDetailList = OrderInvoiceHelper.BindOrderInvoiceDetailModel(orderInvoiceDetail, promoCode);
                        List <long>             productIds             = OrderInvoiceHelper.GetProductIds(orderInvoiceDetailList);
                        List <long>             sizeIds = OrderInvoiceHelper.GetSizeIds(orderInvoiceDetailList);
                        var productCategoryDetails      = iProduct.GetProductCategoryDetail(productIds);
                        var productSizeDetail           = iProduct.GetProductSizeDetails(productIds);
                        var sizeDetail = iSize.GetSizeDetailsBySizeIds(sizeIds);
                        List <ProductImage> productImages = iProduct.GetProductImagesByProductIds(productIds);
                        orderInvoiceDetailList = OrderInvoiceHelper.BindOrderInvoiceDetailImageToModel(orderInvoiceDetailList, scheme, productImages);
                        orderInvoiceDetailList = OrderInvoiceHelper.BindOrderInvoiceProductCategoryToModel(orderInvoiceDetailList, productCategoryDetails);

                        orderInvoiceDetailList = OrderInvoiceHelper.BindOrderInvoiceProductSizeToModel(orderInvoiceDetailList, productSizeDetail, sizeDetail);
                        return(Ok(ResponseHelper.Success(orderInvoiceDetailList)));
                    }
                    else
                    {
                        return(Ok(ResponseHelper.Error(MessageConstants.DataNotFound)));
                    }
                }
                else
                {
                    return(Ok(ResponseHelper.Error(MessageConstants.CompulsoryData)));
                }
            }
            catch (Exception ex)
            {
                LogHelper.ExceptionLog(ex.Message + "  :::::  " + ex.StackTrace);
                return(Ok(ResponseHelper.Error(ex.Message)));
            }
        }
Пример #7
0
 public static async Task SendInvoice(string toMail, OrderInvoiceDetailModel orderDetailModel, string hostPath, string clientEmail, string clientPassword, string port, string sMTPUrl, string host, string scheme)
 {
     await Task.Run(() =>
     {
         var hostingPath = hostPath;
         string path     = string.Concat(hostingPath, "/" + Constants.OrderConfirmationMail);
         if (System.IO.File.Exists(path))
         {
             string _clientEmail        = clientEmail;
             string clientEmailPassword = clientPassword;
             string _port    = port;
             string mailHost = sMTPUrl;
             string _host    = host;
             string _scheme  = scheme;
             string html     = GetOrderInvoiceMailString(orderDetailModel, hostingPath);
             MailHelper.SendMail(toMail, Constants.InvoiceDetail, html, _clientEmail, mailHost, _port, clientEmailPassword);
         }
     });
 }
Пример #8
0
 /// <summary>
 /// Binds the order invoice product category to model.
 /// </summary>
 /// <param name="orderInvoiceDetail">The order invoice detail.</param>
 /// <param name="scheme">The scheme.</param>
 /// <param name="productImageModel">The product image model.</param>
 /// <returns></returns>
 public static OrderInvoiceDetailModel BindOrderInvoiceProductCategoryToModel(OrderInvoiceDetailModel orderInvoiceDetail, List <ProductCategoryDetail> categoryDetails)
 {
     if (orderInvoiceDetail != null)
     {
         foreach (var item in orderInvoiceDetail.ProductDetails)
         {
             var category = categoryDetails.Where(x => x.ProductFK == DBHelper.ParseInt64(item.ProductId)).ToList();
             if (category != null)
             {
                 string categories = "";
                 foreach (var cat in category)
                 {
                     categories += cat.ProductCategoryType.CategoryType + ",";
                 }
                 categories    = categories.TrimEnd(',');
                 item.Category = categories;
             }
         }
     }
     return(orderInvoiceDetail);
 }
Пример #9
0
        /// <summary>
        /// Converts to order invoice detail model.
        /// </summary>
        /// <param name="orderInvoiceDetail">The model.</param>
        /// <returns></returns>
        public static OrderInvoiceDetailModel BindOrderInvoiceDetailModel(List <OrderInvoiceDetail> orderInvoiceDetail, PromoCode promoCode = null)
        {
            OrderInvoiceDetailModel orderInvoiceDetailModel = new OrderInvoiceDetailModel();

            if (orderInvoiceDetail != null)
            {
                orderInvoiceDetailModel.OrderDate       = DBHelper.ParseString(Convert.ToDateTime(orderInvoiceDetail[0].OrderInvoice.Order.OrderDate));
                orderInvoiceDetailModel.Address1        = orderInvoiceDetail[0].OrderInvoice.Order.UserAddress.Address1;
                orderInvoiceDetailModel.Address2        = orderInvoiceDetail[0].OrderInvoice.Order.UserAddress.Address2;
                orderInvoiceDetailModel.City            = orderInvoiceDetail[0].OrderInvoice.Order.UserAddress.City;
                orderInvoiceDetailModel.State           = orderInvoiceDetail[0].OrderInvoice.Order.UserAddress.State.Name;
                orderInvoiceDetailModel.Country         = orderInvoiceDetail[0].OrderInvoice.Order.UserAddress.Country.Name;
                orderInvoiceDetailModel.CompanyName     = orderInvoiceDetail[0].OrderInvoice.User.Companyname;
                orderInvoiceDetailModel.FirstName       = orderInvoiceDetail[0].OrderInvoice.User.FirstName;
                orderInvoiceDetailModel.LastName        = orderInvoiceDetail[0].OrderInvoice.User.LastName;
                orderInvoiceDetailModel.Email           = orderInvoiceDetail[0].OrderInvoice.User.EmailAddress;
                orderInvoiceDetailModel.InvoiceDate     = DBHelper.ParseString(Convert.ToDateTime(orderInvoiceDetail[0].OrderInvoice.InvoiceDate)).Split(' ')[0];
                orderInvoiceDetailModel.InvoiceId       = orderInvoiceDetail[0].OrderInvoice.UniqueInvoiceId;
                orderInvoiceDetailModel.OrderStatus     = orderInvoiceDetail[0].OrderInvoice.OrderStatus.Status;
                orderInvoiceDetailModel.PayableAmount   = DBHelper.ParseString(orderInvoiceDetail[0].OrderInvoice.PayableAmount);
                orderInvoiceDetailModel.PONumber        = orderInvoiceDetail[0].OrderInvoice.Order.PONumber;
                orderInvoiceDetailModel.ShippingCharges = DBHelper.ParseString(orderInvoiceDetail[0].OrderInvoice.ShippingCharges);
                orderInvoiceDetailModel.SubTotalAmount  = DBHelper.ParseString(orderInvoiceDetail[0].OrderInvoice.SubTotalAmount);
                orderInvoiceDetailModel.DiscountAmount  = DBHelper.ParseString(orderInvoiceDetail[0].OrderInvoice.DiscountAmount);
                if (orderInvoiceDetail[0].OrderInvoice.TotalGSTAmount != null)
                {
                    orderInvoiceDetailModel.TotalGSTAmount = DBHelper.ParseString(orderInvoiceDetail[0].OrderInvoice.TotalGSTAmount);
                }
                if (orderInvoiceDetail[0].OrderInvoice.TrackingNumber != null)
                {
                    orderInvoiceDetailModel.TrackingNumber = orderInvoiceDetail[0].OrderInvoice.TrackingNumber;
                }
                orderInvoiceDetailModel.UserId  = DBHelper.ParseString(orderInvoiceDetail[0].OrderInvoice.User.UserId);
                orderInvoiceDetailModel.Zipcode = orderInvoiceDetail[0].OrderInvoice.Order.UserAddress.Zipcode;
                if (promoCode != null)
                {
                    if (promoCode.Amount > 0)
                    {
                        orderInvoiceDetailModel.Discount = "Flat " + promoCode.Amount + " Off";
                    }
                    else
                    {
                        orderInvoiceDetailModel.Discount = promoCode.Percentage + "% Off";
                    }
                    orderInvoiceDetailModel.PromoCode = promoCode.Code;
                }
                List <OrderInvoiceDetailProduct> orderInvoiceDetailProductList = new List <OrderInvoiceDetailProduct>();
                foreach (var item in orderInvoiceDetail)
                {
                    orderInvoiceDetailProductList.Add(new OrderInvoiceDetailProduct
                    {
                        Color     = item.ProductColor.Color.Name,
                        Name      = item.Product.Name,
                        Price     = DBHelper.ParseString(item.Price),
                        ProductId = DBHelper.ParseString(item.ProductFK),
                        Quantity  = DBHelper.ParseString(item.Quantity),
                        Total     = DBHelper.ParseString(item.SubTotalAmount),
                        ColorId   = DBHelper.ParseString(item.ProductColorFK),
                        SizeId    = DBHelper.ParseString(item.Product.SizeFK),
                    });
                }
                orderInvoiceDetailModel.ProductDetails = orderInvoiceDetailProductList;
            }
            return(orderInvoiceDetailModel);
        }