Example #1
0
        /// <summary>
        /// Lấy thông tin file ảnh.
        /// </summary>
        /// <param name="type"></param>
        /// <param name="username"></param>
        /// <returns></returns>
        public static Entities.ProductImage[] GetAllFileInfo(Enums.ImageType type, string username)
        {
            string path   = "";
            string imgUrl = "";

            switch (type)
            {
            case Enums.ImageType.PRODUCT:
                path   = AdminConfigs.PHYSICAL_PATH + username + AdminConfigs.DIRSEPARATOR + AdminConfigs.FOLDER_PRODUCTS;
                imgUrl = AdminConfigs.IMAGE_PATH + username.ToLower() + AdminConfigs.ALTDIRECTORYSEPARATORCHAR + AdminConfigs.FOLDER_PRODUCTS + AdminConfigs.ALTDIRECTORYSEPARATORCHAR;
                break;

            case Enums.ImageType.PRODUCT_TEMP:
                path = AdminConfigs.PHYSICAL_PATH + username + AdminConfigs.DIRSEPARATOR + AdminConfigs.FOLDER_PRODUCT_TEMPS;
                break;
            }
            var arrImg = Directory.GetFiles(path);

            if (arrImg != null)
            {
                Entities.ProductImage[] result = new Entities.ProductImage[arrImg.Count()];
                Entities.ProductImage   img;
                for (int i = 0; i < arrImg.Count(); i++)
                {
                    img = new Entities.ProductImage();
                    var fileInfo = new FileInfo(arrImg[i]);
                    img.Text     = fileInfo.Name;
                    img.ImageUrl = imgUrl;
                    img.Size     = (int)fileInfo.Length;
                    result[i]    = img;
                }
                return(result);
            }
            return(null);
        }
Example #2
0
        public ActionResult UpdateLeaseProduct(int id, Models.ProductModel model, int[] ListRegionNeighbor)
        {
            ViewBag.ActionSubMenu = "Lease";
            bool isSuccess = false;
            int  newId     = 0;

            // Kiểm tra quyền đăng bài
            Entities.Item role   = new Entities.Item();
            int           roleId = CheckRolePost(ref role);

            if (roleId < 0)
            {
                Logs.LogWrite("UpdateLeaseProduct Kiểm tra quyền đăng");
                return(Redirect(roleId));
            }

            if (ModelState.IsValid)
            {
                Entities.Product e = new Entities.Product();
                model.Id = id;
                model.Transaction_Type = (int)Enums.TransactionType.CHO_THUE; // nhà cho thuê
                model.UserId           = int.Parse(CookieHelper.Get(AdminConfigs.COOKIES_USER_ID));

                // Chuyển tiền thành triệu.
                model.StandardCost = StringHelperExtension.MoneyExchange(model.StandardCost);

                model.MapFrom(model, ref e);
                if (id <= 0)
                {
                    e.UpdateBy = e.UserId;
                    // Lấy thông tin username
                    e.UserName = CookieHelper.Get(AdminConfigs.COOKIES_USERNAME);

                    // Lấy thông tin role.
                    e.RoleId   = role.Id;
                    e.RoleText = role.Text;
                }

                int result = 0;
                result = productService.Save(e);
                if (result < 0)
                {
                    ViewBag.Message    = AdminConfigs.MESSAGE_UPDATE_ERROR;
                    ViewBag.AlertClass = AdminConfigs.CLASS_ALERT_DANGER;
                    TempData[AdminConfigs.TEMP_MESSAGE] = AdminConfigs.MESSAGE_UPDATE_ERROR;
                }
                else
                {
                    newId = result;
                    #region Xử lý thêm ảnh vào database
                    Models.ImageConfig[] arrImg = GetAllFileInfo(id, ImageType.PRODUCT_TEMP, e.UserName);
                    if (arrImg.Count() > 0)
                    {
                        string sourceFolder = AdminConfigs.PHYSICAL_PATH + CookieHelper.Get(AdminConfigs.COOKIES_USERNAME).ToLower() + AdminConfigs.DIRSEPARATOR + AdminConfigs.FOLDER_PRODUCT_TEMPS;
                        string targetFolder = AdminConfigs.PHYSICAL_PATH + CookieHelper.Get(AdminConfigs.COOKIES_USERNAME).ToLower() + AdminConfigs.DIRSEPARATOR + AdminConfigs.FOLDER_PRODUCTS;
                        string urlImg       = AdminConfigs.IMAGE_PATH + CookieHelper.Get(AdminConfigs.COOKIES_USERNAME).ToLower() + AdminConfigs.ALTDIRECTORYSEPARATORCHAR + AdminConfigs.FOLDER_PRODUCTS + AdminConfigs.ALTDIRECTORYSEPARATORCHAR;
                        string urlImgTemp   = AdminConfigs.IMAGE_PATH + CookieHelper.Get(AdminConfigs.COOKIES_USERNAME).ToLower() + AdminConfigs.ALTDIRECTORYSEPARATORCHAR + AdminConfigs.FOLDER_PRODUCT_TEMPS + AdminConfigs.ALTDIRECTORYSEPARATORCHAR;
                        try
                        {
                            // Cập nhật avatar
                            productService.UpdateAvatar(result, arrImg[0].caption, urlImg + AdminConfigs.AVATAR_WIDTH + "_" + AdminConfigs.AVATAR_HEIGHT + AdminConfigs.ALTDIRECTORYSEPARATORCHAR);

                            // Cập nhật tất cả ảnh vào DB
                            Entities.ProductImage pi;
                            foreach (Models.ImageConfig img in arrImg)
                            {
                                pi            = new Entities.ProductImage();
                                pi.ProductId  = result;
                                pi.Text       = img.caption;
                                pi.Size       = img.size;
                                pi.ImageUrl   = urlImg;
                                pi.DateUpload = System.DateTime.Now;
                                productService.Insert(pi);

                                FileHelper.CropImage(Server.MapPath(Url.Content(urlImgTemp + img.caption)));
                            }
                            // Xử lý chuyển ảnh từ folder temp sang folder product.
                            FileHelper.MoveFile(sourceFolder, targetFolder);
                        }
                        catch
                        {
                        }
                    }
                    #endregion

                    #region Xử lý cập nhật danh sách Product - Region
                    // Cập nhật vùng cố định.
                    Entities.Product_Region pr;
                    if (id == 0)
                    {
                        pr = new Entities.Product_Region();
                        // Insert
                        pr.ProductId = result;
                        pr.RegionId  = model.regionFixedId;
                        pr.Fixed     = true;
                        pr.Status    = true;
                        productService.Insert(pr);

                        if (ListRegionNeighbor != null)
                        {
                            foreach (int regionId in ListRegionNeighbor)
                            {
                                pr           = new Entities.Product_Region();
                                pr.ProductId = result;
                                pr.RegionId  = regionId;
                                pr.Fixed     = false;
                                pr.Status    = true;
                                productService.Insert(pr);
                            }
                        }
                    }
                    else
                    {
                        // Update vùng cố định.
                        int regionFixedDB = productService.GetRegionFixed(id);
                        // Nếu đã tồn tại thì kiểm tra sự trùng khớp với regionFixedId
                        if (regionFixedDB > 0)
                        {
                            // Nếu có sự khác thì cập nhật.
                            if (regionFixedDB != model.regionFixedId)
                            {
                                pr          = productService.GetProductRegion(id, regionFixedDB);
                                pr.RegionId = model.regionFixedId;
                                productService.Update(pr);
                            }
                        }

                        // Cập nhật vùng lân cận.
                        // 1. Lấy danh sách vùng lân cận theo product ID

                        // 2. So sánh vùng lân cận đã lưu trong DB với vùng lân cận mới
                        //  + Nếu trong DB có mà danh sách mới không có thì update Status--> false.
                        //  + Nếu trong DB không có thì thêm mới.
                        var listNeighborRegionDB = productService.ListNeighborRegion(id);
                        if (listNeighborRegionDB != null)
                        {
                            foreach (Entities.Item item in listNeighborRegionDB)
                            {
                                if (!ListRegionNeighbor.Contains(item.Id))
                                {
                                    // Update status.
                                    pr        = productService.GetProductRegion(id, item.Id);
                                    pr.Status = false;
                                    productService.Update(pr);
                                }
                            }

                            foreach (int regionId in ListRegionNeighbor)
                            {
                                if (!listNeighborRegionDB.Exists(x => x.Id == regionId))
                                {
                                    // Add new
                                    pr           = new Entities.Product_Region();
                                    pr.ProductId = id;
                                    pr.RegionId  = regionId;
                                    pr.Fixed     = false;
                                    pr.Status    = true;
                                    productService.Insert(pr);
                                }
                                else
                                {
                                    // Update if status = false.
                                    pr = productService.GetProductRegion(id, regionId);
                                    if (pr.Status == false)
                                    {
                                        pr.Status = true;
                                        productService.Update(pr);
                                    }
                                }
                            }
                        }
                        else
                        {
                            foreach (int regionId in ListRegionNeighbor)
                            {
                                // Add new
                                pr           = new Entities.Product_Region();
                                pr.ProductId = id;
                                pr.RegionId  = regionId;
                                pr.Fixed     = false;
                                pr.Status    = true;
                                productService.Insert(pr);
                            }
                        }
                    }
                    #endregion

                    #region Xử lý gửi mail cho môi giới
                    // Lấy thông tin host.
                    Uri    uri     = Request.Url;
                    string urlHost = uri.GetLeftPart(UriPartial.Authority);
                    // Link sản phẩm.
                    string           link           = "<a href='" + urlHost + "/" + AdminConfigs.FRIENDLY_LINK_PRODUCT_DETAIL.ToFriendlyUrl(result, e.Text.ToAlias()) + "'>" + e.Text + "</a>";
                    ArticleService   articleService = new ArticleService();
                    Entities.Article article        = new Entities.Article();

                    // Danh sách những email cần phải gửi thông tin.
                    List <string> ListEmail = new List <string>();

                    // Lấy form mail từ bài viết
                    article = articleService.GetByAlias("[email_thong_bao_san_pham_moi]");

                    // Xử lý các tham số trong mail.
                    // Thay tên người bán
                    article.Body = article.Body.Replace("[user]", e.UserName);
                    // Thay tên sản phẩm
                    article.Title = article.Title.Replace("[product]", e.Text);

                    article.Body = article.Body.Replace("[product]", link);

                    // Lấy danh sách email của các môi giới
                    ListEmail = productService.ListEmailAgency(result);

                    BusinessLayer.Helpers.MailHelper.MailArticle(article, ListEmail);
                    #endregion
                    TempData[AdminConfigs.TEMP_MESSAGE] = AdminConfigs.MESSAGE_UPDATE_SUCCESS;
                    isSuccess = true;
                }
            }
            else
            {
                var errors = ModelState.Select(x => x.Value.Errors)
                             .Where(y => y.Count > 0)
                             .ToList();
                ViewBag.Message    = AdminConfigs.MESSAGE_UPDATE_ERROR;
                ViewBag.AlertClass = AdminConfigs.CLASS_ALERT_DANGER;
            }

            LoadModel(ref model);

            ViewBag.ActionForm  = "UpdateLeaseProduct";
            ViewBag.SubmitValue = id > 0 ? AdminConfigs.BUTTON_UPDATE : AdminConfigs.BUTTON_ADD;

            if (isSuccess)
            {
                //return RedirectToAction("Index", new { type = "", page = 1 });
                return(RedirectToAction("Detail", "Template1", new { area = "", Id = newId }));
            }
            else
            {
                return(PartialView("Index", model));
            }
        }
Example #3
0
        /// <summary>
        /// Updates the given <see cref="ProductImage"/>.
        /// </summary>
        /// <param name="productId">The id of the product that counted images belong to.</param>
        /// <param name="productImageId">Id of the object being updated.</param>
        /// <param name="image">The <see cref="ProductImage"/> to update.</param>
        /// <param name="cancellationToken">Cancellation Token</param>
        /// <returns>The updated <see cref="ProductImage"/>.</returns>
        public virtual async Task <Entities.ProductImage> UpdateAsync(long productId, long productImageId, Entities.ProductImage image, CancellationToken cancellationToken = default)
        {
            var req     = PrepareRequest($"products/{productId}/images/{productImageId}.json");
            var content = new JsonContent(new
            {
                image = image
            });
            var response = await ExecuteRequestAsync <Entities.ProductImage>(req, HttpMethod.Put, cancellationToken, content, "image");

            return(response.Result);
        }