public JsonResult SetClaimOnWork(int id, int? cv) { cv = cv ?? 0; var isComplete = false; var message = string.Empty; ClaimStatusHistory model = null; try { var db = new DbEngine(); var hasPosition = db.HasClaimPosition(id); if (hasPosition) { isComplete = DbEngine.ChangeTenderClaimClaimStatus(new TenderClaim() { Id = id, ClaimStatus = 2 }); var productManagers = db.LoadProductManagersForClaim(id, cv.Value); 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 user = GetUser(); var comment = "Продакты/снабженцы:<br />"; comment += string.Join("<br />", productManagers.Select(x => x.ShortName)); comment += "<br />Автор: " + user.ShortName; model = new ClaimStatusHistory() { Date = DateTime.Now, IdClaim = id, IdUser = user.Id, Status = new ClaimStatus() { Id = 2 }, Comment = comment }; db.SaveClaimStatusHistory(model); model.DateString = model.Date.ToString("dd.MM.yyyy HH:mm"); //>>>>Уведомления var claimPositions = db.LoadSpecificationPositionsForTenderClaim(id, cv.Value); var productInClaim = productManagersFromAd.Where(x => productManagers.Select(y => y.Id).Contains(x.Id)).ToList(); var claim = db.LoadTenderClaimById(id); var host = ConfigurationManager.AppSettings["AppHost"]; foreach (var productManager in productInClaim) { var positionCount = claimPositions.Count(x => x.ProductManager.Id == productManager.Id); var messageMail = new StringBuilder(); messageMail.Append("Добрый день!"); messageMail.Append(String.Format("<br/>На имя {0} назначена заявка в системе СпецРасчет.", productManager.ShortName)); //messageMail.Append("<br/>Пользователь "); //messageMail.Append(user.Name); //messageMail.Append( // " создал заявку где Вам назначены позиции для расчета. Количество назначенных позиций: " + // positionCount + "<br/>"); messageMail.Append("<br/><br />"); messageMail.Append(GetClaimInfo(claim)); messageMail.Append("<br />Ссылка на заявку: "); messageMail.Append("<a href='" + host + "/Calc/Index?claimId=" + claim.Id + "'>" + host + "/Calc/Index?claimId=" + claim.Id + "</a>"); //messageMail.Append("<br/>Сообщение от системы Спец расчет"); Notification.SendNotification(new[] { productManager }, messageMail.ToString(), String.Format("{0} - {1} - Новая заявка СпецРасчет", claim.TenderNumber, claim.Customer)); } } } else { message = "Невозможно передать заявку в работу без позиций спецификаций"; } } catch (Exception) { isComplete = false; } return Json(new { IsComplete = isComplete, Message = message, Model = model }, JsonRequestBehavior.AllowGet); }