public JsonResult EditClaimPosition(SpecificationPosition model) { var isComplete = false; try { var user = GetUser(); var db = new DbEngine(); var claimStatus = db.LoadLastStatusHistoryForClaim(model.IdClaim); if (claimStatus == null || claimStatus.Status == null || claimStatus.Status.ToString() == "1") model.State = 1; else model.State = 5; model.Author = user.Id; var modelValid = true; if (string.IsNullOrEmpty(model.Name)) modelValid = false; if (modelValid) { isComplete = db.UpdateSpecificationPosition(model); } } catch (Exception) { isComplete = false; } return Json(new { IsComplete = isComplete }); }
public JsonResult AddCommentToClaim(string comment, int idClaim, int cv) { var isComplete = false; ClaimStatusHistory statusHistory = null; try { var user = GetUser(); var db = new DbEngine(); statusHistory = db.LoadLastStatusHistoryForClaim(idClaim); statusHistory.Date = DateTime.Now; statusHistory.IdUser = user.Id; statusHistory.Comment = comment; statusHistory.DateString = statusHistory.Date.ToString("dd.MM.yyyy HH:mm"); isComplete = db.SaveClaimStatusHistory(statusHistory); if (isComplete) { var productManagers = db.LoadProductManagersForClaim(idClaim, cv); var productManagersFromAd = UserHelper.GetProductManagers(); var productInClaim = productManagersFromAd.Where(x => productManagers.Select(y => y.Id).Contains(x.Id)).ToList(); var claim = db.LoadTenderClaimById(idClaim); var host = ConfigurationManager.AppSettings["AppHost"]; var messageMail = new StringBuilder(); messageMail.Append("Добрый день!"); messageMail.Append("<br/>"); messageMail.Append("В заявке № " + idClaim + ", где Вам назначены позиции для расчета, пользователь "); messageMail.Append(user.ShortName); messageMail.Append(" создал комментарий: <br />" + comment); messageMail.Append("<br/>"); //messageMail.Append(GetClaimInfo(claim)); //messageMail.Append("<br/><br/>"); messageMail.Append("Ссылка на заявку: "); messageMail.Append("<a href='" + host + "/Calc/Index?claimId=" + claim.Id + "'>" + host + "/Calc/Index?claimId=" + claim.Id + "</a>"); //messageMail.Append("<br/>Сообщение от системы Спец расчет"); Notification.SendNotification(productInClaim, messageMail.ToString(), String.Format("{0} - {1} - Комментарий к заявке СпецРасчет", claim.TenderNumber, claim.Customer)); } } catch (Exception) { isComplete = false; } return Json(new { IsComplete = isComplete, Model = statusHistory }, JsonRequestBehavior.AllowGet); }
public JsonResult SendPositonOnWork(List<int> positionsId, string comment, int idClaim, int cv) { var isComplete = false; ClaimStatusHistory model = null; try { var user = GetUser(); var db = new DbEngine(); isComplete = db.ChangePositionsState(positionsId, 1); var lastStatus = db.LoadLastStatusHistoryForClaim(idClaim); int claimStatus; var allPositions = db.LoadSpecificationPositionsForTenderClaim(idClaim, cv); if (lastStatus.Status.Id == 9) claimStatus = 2; else claimStatus = lastStatus.Status.Id; var productManagers = allPositions.Where(x => positionsId.Contains(x.Id)).Select(x => x.ProductManager).ToList(); if (productManagers != null && productManagers.Any()) { var productManagersFromAd = UserHelper.GetProductManagers(); foreach (var productManager in productManagers) { var productManagerFromAd = productManagersFromAd.FirstOrDefault(x => x.Id == productManager.Id); if (productManagerFromAd != null) { productManager.ShortName = productManagerFromAd.ShortName; } } } var status = db.LoadLastStatusHistoryForClaim(idClaim).Status.Id; //изменение статуса заявки и истроиии изменения статусов var changeStatusComplete = true; if (lastStatus.Status.Id == 9) changeStatusComplete = DbEngine.ChangeTenderClaimClaimStatus(new TenderClaim() { Id = idClaim, ClaimStatus = 2 }); if (changeStatusComplete) { model = new ClaimStatusHistory() { Date = DateTime.Now, IdUser = user.Id, IdClaim = idClaim, Comment = "Переданы позиции для повторного расчета для:<br />" +string.Join("<br />", productManagers.Select(x => x.ShortName))+"<br /><br />", Status = new ClaimStatus() { Id = claimStatus} }; if (!string.IsNullOrEmpty(comment)) model.Comment += "Комментарий: " + comment + "<br />"; model.Comment += "Автор: " + user.ShortName; db.SaveClaimStatusHistory(model); model.DateString = model.Date.ToString("dd.MM.yyyy HH:mm"); } if (isComplete) { //>>>>Уведомления var claim = db.LoadTenderClaimById(idClaim); productManagers = allPositions.Where(x => positionsId.Contains(x.Id)).Select(x => x.ProductManager).ToList(); if (productManagers.Any()) { var productManagersFromAd = UserHelper.GetProductManagers(); var productInClaim = productManagersFromAd.Where(x => productManagers.Select(y => y.Id).Contains(x.Id)).ToList(); var host = ConfigurationManager.AppSettings["AppHost"]; var messageMail = new StringBuilder(); messageMail.Append("Добрый день!<br/>"); messageMail.Append("В заявке № " + claim.Id + " вам вновь переданы позиции для расчета пользователем " + user.Name +"<br/>"); if (!string.IsNullOrEmpty(comment)) messageMail.Append("Комментарий: " + comment+"<br/>"); messageMail.Append("<br/>"); messageMail.Append("Ссылка на заявку: "); messageMail.Append("<a href='" + host + "/Calc/Index?claimId=" + claim.Id + "'>" + host + "/Calc/Index?claimId=" + claim.Id + "</a>"); //messageMail.Append("<br/>Сообщение от системы Спец расчет"); Notification.SendNotification(productInClaim, messageMail.ToString(), String.Format("{0} - {1} - Повторная передача позиций СпецРасчет для расчета", claim.TenderNumber, claim.Customer)); } } } catch (Exception) { isComplete = false; } return Json(new { IsComplete = isComplete, Model = model }); }
public JsonResult SetPositonRejected(List<int> positionsId, string comment, int idClaim, int cv) { var isComplete = false; ClaimStatusHistory model = null; try { var user = GetUser(); var db = new DbEngine(); isComplete = db.ChangePositionsState(positionsId, 3); var allPositions = db.LoadSpecificationPositionsForTenderClaim(idClaim, cv); int claimStatus = 3; bool isSameCalculate = allPositions.Any(x => x.State == 2 || x.State == 4); if (isSameCalculate) claimStatus = 6; var status = db.LoadLastStatusHistoryForClaim(idClaim).Status.Id; //изменение статуса заявки и истроиии изменения статусов if (status != claimStatus) { var changeStatusComplete = DbEngine.ChangeTenderClaimClaimStatus(new TenderClaim() { Id = idClaim, ClaimStatus = claimStatus }); if (changeStatusComplete) { model = new ClaimStatusHistory() { Date = DateTime.Now, IdUser = user.Id, IdClaim = idClaim, Comment = comment, Status = new ClaimStatus() { Id = claimStatus } }; if (string.IsNullOrEmpty(model.Comment)) model.Comment = string.Empty; db.SaveClaimStatusHistory(model); model.DateString = model.Date.ToString("dd.MM.yyyy HH:mm"); } } if (isComplete) { //>>>>Уведомления var claim = db.LoadTenderClaimById(idClaim); var productManagers = allPositions.Where(x => positionsId.Contains(x.Id)).Select(x => x.ProductManager).ToList(); if (productManagers.Any()) { var productManagersFromAd = UserHelper.GetProductManagers(); var productInClaim = productManagersFromAd.Where(x => productManagers.Select(y => y.Id).Contains(x.Id)).ToList(); var host = ConfigurationManager.AppSettings["AppHost"]; var messageMail = new StringBuilder(); messageMail.Append("Добрый день!"); messageMail.Append("<br/>"); messageMail.Append("Пользователь "); messageMail.Append(user.ShortName); messageMail.Append(" отклонил Ваш расчет позиции по заявке № " + claim.Id + "<br/>"); if (!string.IsNullOrEmpty(comment)) messageMail.Append("Комментарий: " + comment); messageMail.Append("<br/><br/>"); //messageMail.Append(GetClaimInfo(claim)); //messageMail.Append("<br/>"); messageMail.Append("Ссылка на заявку: "); messageMail.Append("<a href='" + host + "/Calc/Index?claimId=" + claim.Id + "'>" + host + "/Calc/Index?claimId=" + claim.Id + "</a>"); //messageMail.Append("<br/>Сообщение от системы Спец расчет"); Notification.SendNotification(productInClaim, messageMail.ToString(), String.Format("{0} - {1} - Отклонение расчета позиций СпецРасчет", claim.TenderNumber, claim.Customer)); } } } catch (Exception) { isComplete = false; } return Json(new { IsComplete = isComplete, Model = model }); }
public JsonResult AskPositionReject(List<int> posIds, int idClaim, int cv) { var isComplete = false; var message = string.Empty; ClaimStatusHistory model = null; var user = GetUser(); var db = new DbEngine(); var positions = new List<SpecificationPosition>(); var positionIds = new List<int>(); if (posIds.Any()) { positionIds = posIds; } isComplete = db.ChangePositionsState(positionIds, 7); if (!isComplete) message = "Запрос не отправлен"; else { var allPositions = db.LoadSpecificationPositionsForTenderClaim(idClaim, cv); var isAllRejected = allPositions.Count() == allPositions.Count(x => x.State == 7); var lastClaimStatus = db.LoadLastStatusHistoryForClaim(idClaim).Status.Id; var claimStatus = lastClaimStatus; //Изменение статуса заявки и истроии изменения статусов if (lastClaimStatus != claimStatus) { DbEngine.ChangeTenderClaimClaimStatus(new TenderClaim() { Id = idClaim, ClaimStatus = claimStatus }); var statusHistory = new ClaimStatusHistory() { Date = DateTime.Now, Comment = String.Format("Пользователь {0} запросил отклонение {1} из {2} позиций.<br/>", user.ShortName, positionIds.Count, allPositions.Count), IdClaim = idClaim, IdUser = user.Id, Status = new ClaimStatus() { Id = claimStatus } }; db.SaveClaimStatusHistory(statusHistory); statusHistory.DateString = statusHistory.Date.ToString("dd.MM.yyyy HH:mm"); model = statusHistory; } else { var statusHistory = new ClaimStatusHistory() { Date = DateTime.Now, Comment = String.Format("Пользователь {0} запросил отклонение {1} из {2} позиций.<br/>", user.ShortName, positionIds.Count, allPositions.Count), IdClaim = idClaim, IdUser = user.Id, Status = new ClaimStatus() { Id = lastClaimStatus } }; db.SaveClaimStatusHistory(statusHistory); statusHistory.DateString = statusHistory.Date.ToString("dd.MM.yyyy HH:mm"); model = statusHistory; } //инфа для уведомления var claim = db.LoadTenderClaimById(idClaim); var host = ConfigurationManager.AppSettings["AppHost"]; var productManagersFromAd = UserHelper.GetProductManagers(); var productManagers = db.LoadProductManagersForClaim(claim.Id, cv); var productInClaim = productManagersFromAd.Where(x => productManagers.Select(y => y.Id).Contains(x.Id)) .ToList(); var manager = UserHelper.GetUserById(claim.Manager.Id); var author = UserHelper.GetUserById(claim.Author.Id); var to = new List<UserBase>(); to.Add(manager); if (author.Id != manager.Id) { to.Add(author); } //>>>>Уведомления if (isAllRejected) { var messageMail = new StringBuilder(); messageMail.Append("Добрый день!<br/>"); messageMail.Append("Запрос на отклонение позиций в заявке №" + claim.Id + " пльзователем " + user.Name + ".<br/>"); //messageMail.Append("Комментарий:<br/>"); //messageMail.Append(comment + "<br/>"); //messageMail.Append("Продакты/Снабженцы: <br/>"); //foreach (var productManager in productInClaim) //{ // messageMail.Append(productManager.Name + "<br/>"); //} messageMail.Append("Ссылка на заявку: "); messageMail.Append("<a href='" + host + "/Claim/Index?claimId=" + claim.Id + "'>" + host + "/Claim/Index?claimId=" + claim.Id + "</a>"); //messageMail.Append("<br/>Сообщение от системы Спец расчет"); Notification.SendNotification(to, messageMail.ToString(), String.Format("{0} - {1} - Запрос на отклонение позиций заявки СпецРасчет", claim.TenderNumber, claim.Customer)); } //>>>>Уведомления if (!isAllRejected) { var noneRejectedPositionManagers = allPositions.Where(x => x.State == 1 || x.State == 3) .Select(x => x.ProductManager) .ToList(); if (noneRejectedPositionManagers.Any()) { var products = productManagersFromAd.Where( x => noneRejectedPositionManagers.Select(y => y.Id).Contains(x.Id)) .ToList(); var messageMail = new StringBuilder(); messageMail.Append("Добрый день!<br/>"); messageMail.Append("Запрос на отклонение позиций в заявке №" + claim.Id + " пльзователем " + user.Name + ".<br/>"); messageMail.Append("Отклонено позиций " + allPositions.Count(x => x.State == 5) + " из " + allPositions.Count + ".<br/>"); //messageMail.Append("<br/>"); //messageMail.Append(GetClaimInfo(claim)); //messageMail.Append("<br/>"); messageMail.Append("Ссылка на заявку: "); messageMail.Append("<a href='" + host + "/Claim/Index?claimId=" + claim.Id + "'>" + host + "/Claim/Index?claimId=" + claim.Id + "</a>"); //messageMail.Append("<br/>Сообщение от системы Спец расчет"); Notification.SendNotification(to, messageMail.ToString(), String.Format("{0} - {1} - Запрос на отклонение позиций заявки СпецРасчет", claim.TenderNumber, claim.Customer)); } } } return Json(new { IsComplete = isComplete, Message = message, Model = model }, JsonRequestBehavior.AllowGet); }
public JsonResult SetPositionRejected(List<int> posIds, int idClaim, string comment, int cv) { var isComplete = false; var message = string.Empty; ClaimStatusHistory model = null; /* try {*/ var user = GetUser(); var db = new DbEngine(); //получение позиций для текущего юзера var positions = new List<SpecificationPosition>(); if (UserHelper.IsController(user)) { positions = db.LoadSpecificationPositionsForTenderClaim(idClaim, cv); } else { if (UserHelper.IsProductManager(user)) { positions = db.LoadSpecificationPositionsForTenderClaimForProduct(idClaim, user.Id, cv); } } var positionIds = new List<int>(); //if (positions.Any()) if (posIds.Any()) { //Переделано для частичной передачи расчета positionIds = posIds; } //изменения статуса позиций на - отправлено else { foreach (var position in positions) { positionIds.Add(position.Id); } } isComplete = db.ChangePositionsState(positionIds,5); if (!isComplete) message = "Позиции не отклонены"; else { var allPositions = db.LoadSpecificationPositionsForTenderClaim(idClaim, cv); var isAllRejected = allPositions.Count() == allPositions.Count(x => x.State == 5); var lastClaimStatus = db.LoadLastStatusHistoryForClaim(idClaim).Status.Id; var claimStatus = isAllRejected ? 9 : lastClaimStatus; //Изменение статуса заявки и истроии изменения статусов if (lastClaimStatus != claimStatus) { DbEngine.ChangeTenderClaimClaimStatus(new TenderClaim() { Id = idClaim, ClaimStatus = claimStatus }); var statusHistory = new ClaimStatusHistory() { Date = DateTime.Now, Comment = String.Format("Пользователь {0} отклонил {2} из {3} позиций.<br/>Комментарий: {1} ",user.ShortName,comment,positionIds.Count,allPositions.Count), IdClaim = idClaim, IdUser = user.Id, Status = new ClaimStatus() { Id = claimStatus } }; db.SaveClaimStatusHistory(statusHistory); statusHistory.DateString = statusHistory.Date.ToString("dd.MM.yyyy HH:mm"); model = statusHistory; } else { var statusHistory = new ClaimStatusHistory() { Date = DateTime.Now, Comment = String.Format("Пользователь {0} отклонил {2} из {3} позиций.<br/>Комментарий: {1} ", user.ShortName, comment, positionIds.Count, allPositions.Count), IdClaim = idClaim, IdUser = user.Id, Status = new ClaimStatus() { Id = lastClaimStatus } }; db.SaveClaimStatusHistory(statusHistory); statusHistory.DateString = statusHistory.Date.ToString("dd.MM.yyyy HH:mm"); model = statusHistory; } //инфа для уведомления var claim = db.LoadTenderClaimById(idClaim); var host = ConfigurationManager.AppSettings["AppHost"]; var productManagersFromAd = UserHelper.GetProductManagers(); var productManagers = db.LoadProductManagersForClaim(claim.Id, cv); var productInClaim = productManagersFromAd.Where(x => productManagers.Select(y => y.Id).Contains(x.Id)) .ToList(); var manager = UserHelper.GetUserById(claim.Manager.Id); var author = UserHelper.GetUserById(claim.Author.Id); var to = new List<UserBase>(); to.Add(manager); if (author.Id != manager.Id) { to.Add(author); } //>>>>Уведомления if (claimStatus == 9) { var messageMail = new StringBuilder(); messageMail.Append("Добрый день!<br/>"); messageMail.Append("Позиции в заявке № " + claim.Id + " отклонены пользователем " + user.Name + ".<br/>"); messageMail.Append("Отклонены все позиции.<br/>"); messageMail.Append("Комментарий:<br/>"); messageMail.Append(comment+"<br/>"); //messageMail.Append("Продакты/Снабженцы: <br/>"); //foreach (var productManager in productInClaim) //{ // messageMail.Append(productManager.Name + "<br/>"); //} messageMail.Append("Ссылка на заявку: "); messageMail.Append("<a href='" + host + "/Claim/Index?claimId=" + claim.Id + "'>" + host + "/Claim/Index?claimId=" + claim.Id + "</a>"); //messageMail.Append("<br/>Сообщение от системы Спец расчет"); Notification.SendNotification(to, messageMail.ToString(), String.Format("{0} - {1} - Полное отклонение заявки СпецРасчет", claim.TenderNumber, claim.Customer)); } //>>>>Уведомления if (claimStatus == lastClaimStatus) { var noneRejectedPositionManagers = allPositions.Where(x => x.State == 1 || x.State == 3) .Select(x => x.ProductManager) .ToList(); if (noneRejectedPositionManagers.Any()) { var products = productManagersFromAd.Where( x => noneRejectedPositionManagers.Select(y => y.Id).Contains(x.Id)) .ToList(); var messageMail = new StringBuilder(); messageMail.Append("Добрый день!<br/>"); messageMail.Append("Позиции в заявке №" + claim.Id + " отклонены пльзователем "+ user.Name+".<br/>"); messageMail.Append("Отклонено позиций "+allPositions.Count(x => x.State==5)+" из "+allPositions.Count+".<br/>"); //messageMail.Append("<br/>"); //messageMail.Append(GetClaimInfo(claim)); //messageMail.Append("<br/>"); messageMail.Append("Ссылка на заявку: "); messageMail.Append("<a href='" + host + "/Claim/Index?claimId=" + claim.Id + "'>" + host + "/Claim/Index?claimId=" + claim.Id + "</a>"); //messageMail.Append("<br/>Сообщение от системы Спец расчет"); Notification.SendNotification(to, messageMail.ToString(), String.Format("{0} - {1} - Частичное отклонение заявки СпецРасчет", claim.TenderNumber, claim.Customer)); } } } /* } else { message = "Невозможно отправить позиции на подтверждение\rНе все позиции имеют расчет"; } } else { message = "Выберите хотябы одну позицию!"; }*/ /* } catch (Exception) { isComplete = false; message = "Ошибка сервера"; }*/ return Json(new { IsComplete = isComplete, Message = message, Model = model }, JsonRequestBehavior.AllowGet); }
public JsonResult AddComment(int idClaim, string comment) { var isComplete = false; ClaimStatusHistory model = null; try { var user = GetUser(); var db = new DbEngine(); var lastHistory = db.LoadLastStatusHistoryForClaim(idClaim); if (lastHistory != null) { lastHistory.Date = DateTime.Now; lastHistory.Comment = user.ShortName + ": " + comment; lastHistory.IdUser = user.Id; isComplete = db.SaveClaimStatusHistory(lastHistory); if (isComplete) { //var productManagers = db.LoadProductManagersForClaim(idClaim); //var productManagersFromAd = UserHelper.GetProductManagers(); //var productInClaim = // productManagersFromAd.Where(x => productManagers.Select(y => y.Id).Contains(x.Id)).ToList(); var claim = db.LoadTenderClaimById(idClaim); var host = ConfigurationManager.AppSettings["AppHost"]; var messageMail = new StringBuilder(); messageMail.Append("Добрый день!"); messageMail.Append("<br/>"); messageMail.Append("В заявке № " + idClaim + " пользователь "); messageMail.Append(GetUser().ShortName); messageMail.Append(" создал комментарий: " + comment); messageMail.Append("<br/>"); //messageMail.Append(GetClaimInfo(claim)); //messageMail.Append("<br/><br/>"); messageMail.Append("Ссылка на заявку: "); messageMail.Append("<a href='" + host + "/Claim/Index?claimId=" + claim.Id + "'>" + host + "/Claim/Index?claimId=" + claim.Id + "</a>"); //messageMail.Append("<br/>Сообщение от системы Спец расчет"); var author = UserHelper.GetUserById(claim.Author.Id); var manager = UserHelper.GetUserById(claim.Manager.Id); ; var to = new List<UserBase>(); to.Add(manager); if (author.Id != manager.Id) { to.Add(author); } Notification.SendNotification(to, messageMail.ToString(), String.Format("{0} - {1} - Комментарий к заявке СпецРасчет", claim.TenderNumber, claim.Customer)); } lastHistory.DateString = lastHistory.Date.ToString("dd.MM.yyyy HH:mm"); model = lastHistory; } } catch (Exception) { isComplete = false; } return Json(new { IsComplete = isComplete, Model = model }, JsonRequestBehavior.AllowGet); }
public JsonResult SetPositionToConfirm(List<int> posIds, int idClaim, string comment, int cv) { var isComplete = false; var message = string.Empty; ClaimStatusHistory model = null; try { var user = GetUser(); var db = new DbEngine(); //получение позиций для текущего юзера var positions = new List<SpecificationPosition>(); if (UserHelper.IsController(user)) { positions = db.LoadSpecificationPositionsForTenderClaim(idClaim, cv); } else { if (UserHelper.IsProductManager(user)) { positions = db.LoadSpecificationPositionsForTenderClaimForProduct(idClaim, user.Id, cv); } } //if (positions.Any()) if (posIds.Any()) { //Переделано для частичной передачи расчета positions = new List<SpecificationPosition>(); foreach (int p in posIds) { positions.Add(new SpecificationPosition(){Id=p}); } // /> частичная передача //проверка наличия у позиций строк расчета var isReady = db.IsPositionsReadyToConfirm(positions); if (isReady) { //изменения статуса позиций на - отправлено isComplete = db.SetPositionsToConfirm(positions); if (!isComplete) message = "Позиции не отправлены"; else { var allPositions = db.LoadSpecificationPositionsForTenderClaim(idClaim, cv); var isAllCalculate = allPositions.Count() == allPositions.Count(x => x.State == 2 || x.State == 4); var claimStatus = isAllCalculate ? 7 : 6; //Изменение статуса заявки и истроии изменения статусов var status = db.LoadLastStatusHistoryForClaim(idClaim).Status.Id; if (status != claimStatus) { DbEngine.ChangeTenderClaimClaimStatus(new TenderClaim() { Id = idClaim, ClaimStatus = claimStatus }); var statusHistory = new ClaimStatusHistory() { Date = DateTime.Now, Comment = comment, IdClaim = idClaim, IdUser = user.Id, Status = new ClaimStatus() {Id = claimStatus} }; db.SaveClaimStatusHistory(statusHistory); statusHistory.DateString = statusHistory.Date.ToString("dd.MM.yyyy HH:mm"); model = statusHistory; } else { var statusHistory = new ClaimStatusHistory() { Date = DateTime.Now, Comment = comment, IdClaim = idClaim, IdUser = user.Id, Status = new ClaimStatus() {Id = status} }; db.SaveClaimStatusHistory(statusHistory); statusHistory.DateString = statusHistory.Date.ToString("dd.MM.yyyy HH:mm"); model = statusHistory; } //инфа для уведомления var claim = db.LoadTenderClaimById(idClaim); var host = ConfigurationManager.AppSettings["AppHost"]; var productManagersFromAd = UserHelper.GetProductManagers(); var productManagers = db.LoadProductManagersForClaim(claim.Id, cv); var productInClaim = productManagersFromAd.Where(x => productManagers.Select(y => y.Id).Contains(x.Id)) .ToList(); var manager = UserHelper.GetUserById(claim.Manager.Id); var author = UserHelper.GetUserById(claim.Author.Id); var to = new List<UserBase>(); to.Add(manager); if (author.Id != manager.Id) { to.Add(author); } //>>>>Уведомления if (claimStatus == 7) { var messageMail = new StringBuilder(); messageMail.Append("Добрый день!"); messageMail.Append("<br/>"); messageMail.Append("Заявка №" + claim.Id + " - версия " + cv + " - полностью расчитана."); //messageMail.Append("<br/><br />"); //messageMail.Append(GetClaimInfo(claim)); messageMail.Append("<br/>"); //messageMail.Append("Продакты/Снабженцы: <br/>"); //foreach (var productManager in productInClaim) //{ // messageMail.Append(productManager.Name + "<br/>"); //} messageMail.Append("Ссылка на заявку: "); messageMail.Append("<a href='" + host + "/Claim/Index?claimId=" + claim.Id + "'>" + host + "/Claim/Index?claimId=" + claim.Id + "</a>"); //messageMail.Append("<br/>Сообщение от системы Спец расчет"); Notification.SendNotification(to, messageMail.ToString(), String.Format("{0} - версия {2} - {1} - Полный расчет заявки СпецРасчет", claim.TenderNumber, claim.Customer, cv)); } //>>>>Уведомления if (claimStatus == 6) { var noneCalculatePositionManagers = allPositions.Where(x => x.State == 1 || x.State == 3) .Select(x => x.ProductManager) .ToList(); if (noneCalculatePositionManagers.Any()) { var products = productManagersFromAd.Where( x => noneCalculatePositionManagers.Select(y => y.Id).Contains(x.Id)) .ToList(); var messageMail = new StringBuilder(); messageMail.Append("Добрый день!"); messageMail.Append("<br/>"); messageMail.Append("Заявка №" + claim.Id + " частично расчитана."); messageMail.Append("Продакты/Снабженцы, у которых расчет еще в работе: <br/>"); foreach (var productManager in products) { messageMail.Append(productManager.Name + "<br/>"); } //messageMail.Append("<br/>"); //messageMail.Append(GetClaimInfo(claim)); //messageMail.Append("<br/>"); messageMail.Append("Ссылка на заявку: "); messageMail.Append("<a href='" + host + "/Claim/Index?claimId=" + claim.Id + "'>" + host + "/Claim/Index?claimId=" + claim.Id + "</a>"); //messageMail.Append("<br/>Сообщение от системы Спец расчет"); Notification.SendNotification(to, messageMail.ToString(), String.Format("{0} - {1} - Частичный расчет заявки СпецРасчет", claim.TenderNumber, claim.Customer)); } } } } else { message = "Невозможно отправить позиции на подтверждение\rНе все позиции имеют расчет"; } } else { message = "Выберите хотябы одну позицию!"; } } catch (Exception) { isComplete = false; message = "Ошибка сервера"; } return Json(new { IsComplete = isComplete, Message = message, Model = model }, JsonRequestBehavior.AllowGet); }
public JsonResult ChangePositionsProduct(List<int> ids, string productId, int idClaim) { var isComplete = false; ClaimStatusHistory model = null; var deleted = true; try { var user = GetUser(); if (UserHelper.IsController(user)) deleted = false; var newProduct = UserHelper.GetUserById(productId); var db = new DbEngine(); isComplete = db.ChangePositionsProduct(ids, productId); if (isComplete) { var comment = "Пользователь " + user.ShortName + " переназначил позиции (" + ids.Count() + " шт.) пользователю " + newProduct.ShortName; var status = db.LoadLastStatusHistoryForClaim(idClaim).Status.Id; var statusHistory = new ClaimStatusHistory() { Date = DateTime.Now, Comment = comment, IdClaim = idClaim, IdUser = user.Id, Status = new ClaimStatus() { Id = status } }; db.SaveClaimStatusHistory(statusHistory); statusHistory.DateString = statusHistory.Date.ToString("dd.MM.yyyy HH:mm"); model = statusHistory; //>>>>Уведомления var claim = db.LoadTenderClaimById(idClaim); var host = ConfigurationManager.AppSettings["AppHost"]; var manager = UserHelper.GetUserById(claim.Manager.Id); //Сообщение менеджеру и автору var messageMail = new StringBuilder(); messageMail.Append("Добрый день!"); //messageMail.Append(manager.Name); messageMail.Append("<br/>"); messageMail.Append("В заявке №" + claim.Id + " произошли изменения."); messageMail.Append("<br/>"); messageMail.Append(comment); messageMail.Append("<br/>"); //messageMail.Append(GetClaimInfo(claim)); messageMail.Append("Ссылка на заявку: "); messageMail.Append("<a href='" + host + "/Claim/Index?claimId=" + claim.Id + "'>" + host + "/Claim/Index?claimId=" + claim.Id + "</a>"); //messageMail.Append("<br/>Сообщение от системы Спец расчет"); Notification.SendNotification(new[] { manager }, messageMail.ToString(), String.Format("{0} - {1} - Переназначение позиций в заявке СпецРасчет", claim.TenderNumber, claim.Customer)); //Сообщение продакту messageMail = new StringBuilder(); messageMail.Append("Добрый день!"); //messageMail.Append(newProduct.Name); messageMail.Append("<br/>"); messageMail.Append("В заявке №" + claim.Id + " Вам переназначены позиции от пользователя " + user.ShortName + "<br/>"); messageMail.Append("Кол-во позиций: " + ids.Count()); messageMail.Append("<br/>"); messageMail.Append(GetClaimInfo(claim)); messageMail.Append("<br/><br />"); messageMail.Append("Ссылка на заявку: "); messageMail.Append("<a href='" + host + "/Calc/Index?claimId=" + claim.Id + "'>" + host + "/Calc/Index?claimId=" + claim.Id + "</a>"); //messageMail.Append("<br/>Сообщение от системы Спец расчет"); Notification.SendNotification(new[] { newProduct }, messageMail.ToString(), String.Format("{0} - {1} - Переназначение позиций в заявке СпецРасчет", claim.TenderNumber, claim.Customer)); } } catch (Exception) { isComplete = false; } return Json(new { IsComplete = isComplete, Model = model, Deleted = deleted }); }