예제 #1
0
 public void MapFrom(Entities.Product e, ref Models.ProductModel m)
 {
     m.Id               = e.Id;
     m.UserId           = e.UserId;
     m.Transaction_Type = e.Transaction_Type;
     m.Product_Type     = e.Product_Type;
     m.CityId           = e.CityId;
     m.DistrictId       = e.DistrictId;
     m.WardId           = e.WardId;
     m.Text             = e.Text;
     m.Text_Alias       = e.Text_Alias;
     m.HouseNumber      = e.HouseNumber;
     m.Address          = e.Address;
     m.Area             = e.Area;
     m.Description      = e.Description;
     m.StandardCost     = StringHelperExtension.MoneyExchange(e.StandardCost, '/');
     m.SellStartDate    = e.SellEndDate;
     m.SellEndDate      = e.SellEndDate;
     m.State            = e.State;
     m.AgencyCost       = e.AgencyCost;
     m.CostUnit         = e.CostUnit;
     m.Tag              = e.Tag;
     m.Approval_Flag    = e.Approval_Flag;
     m.ApprovalBy       = e.ApprovalBy;
     m.ApprovalDate     = e.ApprovalDate;
     m.Delete_Flag      = e.Delete_Flag;
     m.DeleteBy         = e.DeleteBy;
     m.DeleteDate       = e.DeleteDate;
     m.Avatar           = e.Avatar;
     m.Avatar_Url       = e.Avatar_Url;
     m.UpdateBy         = e.UpdateBy.GetValueOrDefault();
     m.UserName         = e.UserName;
     m.RoleId           = e.RoleId.GetValueOrDefault();
     m.RoleText         = e.RoleText;
 }
예제 #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));
            }
        }
예제 #3
0
        public JsonResult DoChangeCost(int productId, long money)
        {
            SelectListItem item   = new SelectListItem();
            int            userId = 0; // UserId

            // Kiểm tra đăng nhập
            if (CookieHelper.Get(AdminConfigs.COOKIES_USER_ID) == null)
            {
                item.Text  = AdminConfigs.ERROR_NOT_LOGIN;
                item.Value = ((int)Errors.NOT_LOGIN).ToString();
                return(Json(item));
            }
            else
            {
                userId = int.Parse(CookieHelper.Get(AdminConfigs.COOKIES_USER_ID));
            }
            Entities.Product product = _service.GetById(productId);

            UserService _userService = new UserService();

            // Người đăng nhập
            Entities.User user = _userService.GetById(userId);

            // Đổi số tiền sang đơn vị triệu
            money = StringHelperExtension.MoneyExchange(money);

            // Kiểm tra số lần đổi giá.

            // Kiểm tra số tiền nhập vào.
            // Số tiền phải nhỏ hơn giá hiện tại
            // Lớn hơn 1/10 giá trị ngôi nhà.
            item = CheckInputCost(_service, product, money);
            if (int.Parse(item.Value) < 0)
            {
                TempData[AdminConfigs.TEMP_MESSAGE] = AdminConfigs.MESSAGE_UPDATE_ERROR;
                return(Json(item));
            }

            // Lấy thông tin thay đổi giá
            Entities.Product_ChangeCost productChangeCost = new Entities.Product_ChangeCost();
            productChangeCost.ProductId   = productId;
            productChangeCost.UserId      = userId;
            productChangeCost.UserName    = user.UserName;
            productChangeCost.PhoneNumber = user.Phone;
            productChangeCost.Cost        = money;

            // Lấy danh sách những người đang theo dõi ngoại trừ người thực hiện thao tác này.
            List <int> ListUserIdFollow = _service.ListUserIdProductFollow(productId);

            ListUserIdFollow.Remove(userId);

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

            // Lấy thông tin lần cập nhật cuối cùng
            Entities.Product_ChangeCost lastChangeCost = _service.GetLastChangeCost(productId, productChangeCost.UserId);

            int result = _service.UpdateProductChangeCost(productChangeCost);

            if (result < 0)
            {
                item       = new SelectListItem();
                item.Text  = AdminConfigs.ERROR_PRODUCT_NOT_KNOW;
                item.Value = ((int)ProductCase.NO).ToString();
            }
            else
            {
                // Chuyển thành trạng thái theo dõi.
                _service.ChangeFollow(productChangeCost.ProductId, productChangeCost.UserId, true);

                // 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(product.Id, product.Text.ToAlias()) + "'>" + product.Text + "</a>";
                ArticleService   articleService = new ArticleService();
                Entities.Article article        = new Entities.Article();

                // Cập nhật vào bảng sản phẩm trong trường hợp chính chủ.
                if (product.UserId == userId)
                {
                    product.UpdateCost = money;
                    product.UpdateBy   = userId;
                    result             = _service.UpdateCost(product);

                    Entities.ProductMessage message = new Entities.ProductMessage();
                    if (result > 0)
                    {
                        // Lấy danh sách những người đã đặt giá
                        List <Entities.Product_ChangeCost> lstChangeCost = _service.GetListProductChangeCost(product.Id, product.UserId, 10000);
                        if (lstChangeCost.Count > 0)
                        {
                            foreach (var obj in lstChangeCost)
                            {
                                // Nếu giá của người muốn mua > giá muốn bán thì sẽ cập nhật vào bảng muốn bán sản phẩm
                                if (obj.Cost >= product.UpdateCost)
                                {
                                    Entities.Product_WantSell pws = new Entities.Product_WantSell();
                                    pws.ProductId  = product.Id;
                                    pws.Text       = product.Text;
                                    pws.CostSell   = (int)product.UpdateCost;
                                    pws.BuyerId    = obj.UserId;
                                    pws.CostBuy    = (int)obj.Cost;
                                    pws.UpdateTime = DateTime.Now;
                                    pws.Times      = 1;
                                    pws.IsChecked  = false;
                                    _service.InsertProductWantSell(pws);

                                    // Cập nhật vào bảng thông báo cho người này
                                    message             = new Entities.ProductMessage();
                                    message.ProductId   = product.Id;
                                    message.ProductText = product.Text;
                                    message.Read_Flag   = false;
                                    message.Delete_Flag = false;
                                    message.CreateDate  = DateTime.Now;
                                    message.From        = product.UserId;
                                    message.To          = obj.UserId;
                                    // người bán [user] muốn bán sản phẩm [product] cho bạn. Hãy gọi điện tới số [phone] để có thể mua sản phẩm này"
                                    message.Content = string.Format(AdminConfigs.MESSAGE_PRODUCT_04);

                                    _service.Insert(message);

                                    #region Gửi mail cho những người liên quan.
                                    // Lấy form mail từ bài viết
                                    article = articleService.GetByAlias("[email_thong_bao_muon_ban_san_pham]");

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

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

                                    // Lấy số phone người bán
                                    article.Body = article.Body.Replace("[phone]", user.Phone);

                                    // Lấy email của người mua.
                                    ListEmail = new List <string>();
                                    ListEmail.Add(obj.Email);
                                    var temp = _service.ListEmailAgency(product.Id);
                                    if (temp.Count > 0)
                                    {
                                        ListEmail.AddRange(temp);
                                    }

                                    BusinessLayer.Helpers.MailHelper.MailArticle(article, ListEmail);
                                    #endregion
                                }
                                else
                                {
                                    // Cập nhật vào danh sách những người cần được thông báo
                                    if (!ListUserIdFollow.Contains(obj.UserId))
                                    {
                                        ListUserIdFollow.Add(obj.UserId);
                                    }
                                }
                            }
                        }
                    }

                    // Cập nhật thông báo cho những người đang theo dõi & những người đã đặt giá.
                    message             = new Entities.ProductMessage();
                    message.ProductId   = product.Id;
                    message.ProductText = product.Text;
                    message.Read_Flag   = false;
                    message.Delete_Flag = false;
                    message.CreateDate  = DateTime.Now;
                    message.From        = product.UserId;
                    //message.To = obj.UserId;
                    // người bán [user] đã thay đổi giá bán sản phẩm [product] thành {0}";
                    message.Content = string.Format(AdminConfigs.MESSAGE_PRODUCT_03, money.MoneyFormat());
                    _service.InsertList(message, ListUserIdFollow);
                    //_service.Insert(message);

                    #region Gửi mail cho những người liên quan.
                    // Lấy form mail từ bài viết
                    article = articleService.GetByAlias("[email_thong_bao_sua_gia_ban]");

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


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

                    // Lấy danh sách email những người đang theo dõi.
                    ListEmail = new List <string>();
                    ListEmail = _service.ListUserEmailFollow(product.Id, userId);

                    // Lấy danh sách email của các môi giới
                    var temp2 = _service.ListEmailAgency(product.Id);
                    if (temp2.Count > 0)
                    {
                        ListEmail.AddRange(temp2);
                    }

                    BusinessLayer.Helpers.MailHelper.MailArticle(article, ListEmail);
                    #endregion
                }
                else
                {
                    Entities.ProductMessage message = new Entities.ProductMessage();
                    message.ProductId   = product.Id;
                    message.ProductText = product.Text;
                    message.Read_Flag   = false;
                    message.Delete_Flag = false;
                    message.CreateDate  = DateTime.Now;
                    message.From        = productChangeCost.UserId;
                    //message.To = product.UserId;
                    if (!ListUserIdFollow.Contains(product.UserId))
                    {
                        ListUserIdFollow.Add(product.UserId);
                    }

                    if (lastChangeCost != null)
                    {
                        // người mua [user] đã thay đổi giá mua sản phẩm [product] từ {0} thành {1}";
                        message.Content = string.Format(AdminConfigs.MESSAGE_PRODUCT_02, lastChangeCost.Cost.MoneyFormat(), money.MoneyFormat());

                        _service.InsertList(message, ListUserIdFollow);

                        #region Gửi mail cho những người liên quan.
                        // Lấy form mail từ bài viết
                        article = articleService.GetByAlias("[email_thong_bao_sua_gia_mua]");

                        // Xử lý các tham số trong mail.
                        // Thay số tiền
                        article.Body = article.Body.Replace("[gia_cu]", lastChangeCost.Cost.MoneyFormat());
                        article.Body = article.Body.Replace("[gia_moi]", money.MoneyFormat());
                        // Thay tên người mua
                        article.Body = article.Body.Replace("[user]", user.UserName);
                        // Thay tên sản phẩm
                        article.Title = article.Title.Replace("[product]", product.Text);

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

                        // Lấy danh sách những người đang theo dõi sản phẩm
                        ListEmail = new List <string>();
                        ListEmail = _service.ListUserEmailFollow(product.Id, userId);

                        // Lấy email người bán sản phẩm.
                        string email = _service.GetEmailByProductId(product.Id);
                        ListEmail.Add(email);

                        // Lấy danh sách email của các môi giới
                        var temp = _service.ListEmailAgency(product.Id);
                        if (temp.Count > 0)
                        {
                            ListEmail.AddRange(temp);
                        }

                        BusinessLayer.Helpers.MailHelper.MailArticle(article, ListEmail);
                        #endregion
                    }
                    else
                    {
                        // người mua [user] đã đặt mua sản phẩm [product] với giá {0}";
                        message.Content = string.Format(AdminConfigs.MESSAGE_PRODUCT_01, money.MoneyFormat());

                        _service.InsertList(message, ListUserIdFollow);

                        #region Gửi mail cho những người liên quan.
                        // Lấy form mail từ bài viết
                        article = articleService.GetByAlias("[email_thong_bao_dat_gia_mua]");

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

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

                        // Lấy email người bán sản phẩm.
                        ListEmail = new List <string>();
                        string email = _service.GetEmailByProductId(product.Id);
                        ListEmail.Add(email);

                        // Lấy danh sách email của các môi giới
                        var temp = _service.ListEmailAgency(product.Id);
                        if (temp.Count > 0)
                        {
                            ListEmail.AddRange(temp);
                        }
                        if (temp.Count > 0)
                        {
                            ListEmail.AddRange(temp);
                        }

                        BusinessLayer.Helpers.MailHelper.MailArticle(article, ListEmail);
                        #endregion
                    }
                }
                TempData[AdminConfigs.TEMP_MESSAGE] = AdminConfigs.MESSAGE_UPDATE_SUCCESS;
                item.Text  = AdminConfigs.MESSAGE_PRODUCT_ORDER_OK;
                item.Value = "1";
            }
            return(Json(item));
        }