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