public ListViewModels(FilterTenderClaim filter, List<KeyValuePair<string, string>> subordinates, Role mainRole) { var db = new DbEngine(); var authorsSidNamePairs = Employee.GetUserListByAdGroup(AdGroup.SpeCalcManager); var managersSidNamePairs = mainRole == Role.Manager ? subordinates : authorsSidNamePairs; authorsSidNamePairs.AddRange(Employee.GetUserListByAdGroup(AdGroup.SpeCalcOperator)); var productsSidNamePairs = mainRole == Role.ProductManager ? subordinates : Employee.GetUserListByAdGroup(AdGroup.SpeCalcProduct); Managers = new List<Manager>(); foreach (var pair in managersSidNamePairs) { Managers.Add(new Manager() { Id = pair.Key, ShortName = pair.Value }); } ProductManagers = new List<ProductManager>(); foreach (var pair in productsSidNamePairs) { ProductManagers.Add(new ProductManager() { Id = pair.Key, ShortName = pair.Value }); } Claims = db.FilterTenderClaims(filter); db.SetProductManagersForClaims(Claims); db.SetStatisticsForClaims(Claims); foreach (var claim in Claims) { claim.Manager.ShortName = authorsSidNamePairs.Find(m => m.Key == claim.Manager.Id).Value; claim.Author.ShortName = authorsSidNamePairs.Find(m => m.Key == claim.Author.Id).Value; } foreach (var claim in Claims) { foreach (var product in claim.ProductManagers) { product.ShortName = ProductManagers.Find(p => p.Id == product.Id)?.ShortName; } } TotalClaimsCount = db.GetCountFilteredTenderClaims(filter); Filter = filter; }
public JsonResult FilterClaim(FilterTenderClaim model) { var isComplete = false; var list = new List<TenderClaim>(); var count = -1; try { var user = GetUser(); var isController = UserHelper.IsController(user); var isProduct = UserHelper.IsProductManager(user); var isManager = UserHelper.IsManager(user); var db = new DbEngine(); if (model.RowCount == 0) model.RowCount = 10; if (string.IsNullOrEmpty(model.IdManager) && isManager && !isController) { var subMans = Employee.GetSubordinates(GetUser().Id); model.IdManager = user.Id + "," + string.Join(",", subMans); } if (string.IsNullOrEmpty(model.IdProductManager) && isProduct && !isController) { var subProds = string.Join(",", Employee.GetSubordinates(GetUser().Id)); model.IdProductManager = user.Id + "," + subProds; } list = db.FilterTenderClaims(model); var adProductManagers = UserHelper.GetProductManagers(); var managers = UserHelper.GetManagers(); if (list.Any()) { db.SetProductManagersForClaims(list); var claimProductManagers = list.SelectMany(x => x.ProductManagers).ToList(); foreach (var claimProductManager in claimProductManagers) { var managerFromAD = adProductManagers.FirstOrDefault(x => x.Id == claimProductManager.Id); if (managerFromAD != null) { claimProductManager.Name = managerFromAD.Name; claimProductManager.ShortName = managerFromAD.ShortName; } } foreach (var claim in list) { var manager = managers.FirstOrDefault(x => x.Id == claim.Manager.Id); if (manager != null) { claim.Manager.ShortName = manager.ShortName; } claim.Author = UserHelper.GetUserById(claim.Author.Id); } db.SetStatisticsForClaims(list); } count = db.GetCountFilteredTenderClaims(model); isComplete = true; } catch (Exception) { isComplete = false; } return Json(new { IsComplete = isComplete, Claims = list, Count = count }); }
public ActionResult ListOld() { //получение пользователя и через наличие у него определенных ролей, определяются настройки по //функциональности на странице var user = GetUser(); if (user == null || !UserHelper.IsUserAccess(user)) { var dict = new RouteValueDictionary(); dict.Add("message", "У Вас нет доступа к приложению"); return RedirectToAction("ErrorPage", "Auth", dict); } ViewBag.UserName = user.Name; var showCalculate = false; var showEdit = false; var changeTenderStatus = false; var filterProduct = string.Empty; var filterManager = string.Empty; var clickAction = string.Empty; var posibleAction = string.Empty; var userId = string.Empty; var author = string.Empty; var reportExcel = false; var deleteClaim = "none"; var newClaim = "true"; var filterClaimStatus = new List<int>(); var isController = UserHelper.IsController(user); var isTenderStatus = UserHelper.IsTenderStatus(user); var isManager = UserHelper.IsManager(user); var isProduct = UserHelper.IsProductManager(user); var isOperator = UserHelper.IsOperator(user); if (isController) { showCalculate = true; showEdit = true; changeTenderStatus = true; clickAction = "editClaim"; posibleAction = "all"; reportExcel = true; deleteClaim = "true"; } else { if (isTenderStatus) { changeTenderStatus = true; clickAction = "null"; posibleAction = "null"; newClaim = "false"; if (isOperator || isManager) newClaim = "true"; } if (isManager) { showEdit = true; //filterManager = user.Id; clickAction = "editClaim"; posibleAction = "editClaim"; userId = user.Id; filterClaimStatus.AddRange(new[] { 1, 2, 3, 6, 7 }); deleteClaim = "self&manager"; } if (isProduct) { showCalculate = true; // filterProduct = user.Id; clickAction = "calculateClaim"; posibleAction = (isManager ? "all" : "calculateClaim"); userId = user.Id; newClaim = "false"; if (isOperator || isManager) newClaim = "true"; if (!isManager) filterClaimStatus.AddRange(new[] { 2, 3, 6, 7 }); } if (isOperator) { showEdit = true; clickAction = "editClaim"; posibleAction = (isProduct ? "all" : "editClaim"); author = user.Id; deleteClaim = "self"; } } ViewBag.Settings = new { showCalculate, showEdit, changeTenderStatus, filterProduct, filterManager, clickAction, posibleAction, userId, filterClaimStatus, author, reportExcel, deleteClaim, newClaim }; ViewBag.Error = false.ToString().ToLower(); ViewBag.ClaimCount = 0; try { //получение инфы по заявкам из БД var db = new DbEngine(); var filter = new FilterTenderClaim() { RowCount = 30, }; var subsProduct = new List<KeyValuePair<string, string>>(); var subsManagers = new List<KeyValuePair<string, string>>(); if (!string.IsNullOrEmpty(filterManager)) filter.IdManager = filterManager; else { if (isManager && !isController) { filter.IdManager = user.Id; subsManagers = Employee.GetSubordinates(user.Id).ToList(); if (subsManagers.Any()) { filter.IdManager = user.Id;// + ","+ String.Join(",", subsManagers); foreach (var sub in subsManagers) { if (sub.Key != null) { filter.IdManager += "," + sub.Key; } } } } } if (!string.IsNullOrEmpty(filterProduct)) filter.IdProductManager = filterProduct; else { if (isProduct && !isController) { filter.IdProductManager = user.Id; subsProduct = Employee.GetSubordinates(user.Id).ToList(); if (subsProduct.Any()) { filter.IdProductManager = user.Id;// + "," + String.Join(",", subsProduct); foreach (var sub in subsProduct) { if (sub.Key != null) { filter.IdProductManager += "," + sub.Key; } } } } //filter.IdProductManager = isProduct && !isController // ? String.Join(",", Employee.GetSubordinates(user.Id)) // : String.Empty; } if (!string.IsNullOrEmpty(author)) filter.Author = author; if (filterClaimStatus.Any()) filter.ClaimStatus = filterClaimStatus; var claims = db.FilterTenderClaims(filter); //снабженцы и менеджеры из ActiveDirectory var prodManSelList = UserHelper.GetProductManagersSelectionList(); var adProductManagers = new List<ProductManager>(); adProductManagers = prodManSelList; if (!isController && isProduct) { var subProds = Employee.GetSubordinateProductManagers(user.Id, subsProduct); if (subProds.Any()) { adProductManagers = subProds; } else { var curProd = new ProductManager() {Id = user.Id, ShortName = user.ShortName}; adProductManagers = new List<ProductManager>(); adProductManagers.Add(curProd); } } var manSelList = UserHelper.GetManagersSelectionList(); var managers = new List<Manager>(); managers = manSelList; if (!isController && isManager) { var subMans = Employee.GetSubordinateManagers(user.Id, subsManagers); if (subMans.Any()) { managers = subMans; } else { var curMan = new Manager() { Id = user.Id, ShortName = user.ShortName }; managers = new List<Manager>(); managers.Add(curMan); } } //var prodManSelList = UserHelper.Get(); if (claims != null && claims.Any()) { db.SetProductManagersForClaims(claims); var claimProductManagers = claims.SelectMany(x => x.ProductManagers).ToList(); foreach (var claimProductManager in claimProductManagers) { claimProductManager.ShortName = prodManSelList.FirstOrDefault(x=>x.Id== claimProductManager.Id)?.ShortName; //var productUser = UserHelper.GetUserById(claimProductManager.Id); //if (productUser != null) //{ // claimProductManager.Name = productUser.Name; // claimProductManager.Name = productUser.ShortName; //} //var managerFromAD = adProductManagers.FirstOrDefault(x => x.Id == claimProductManager.Id); //if (managerFromAD != null) //{ // claimProductManager.Name = managerFromAD.Name; // claimProductManager.ShortName = managerFromAD.ShortName; //} } //var authorsList = UserHelper.GetAuthorsSelectionList(); foreach (var claim in claims) { claim.Manager.ShortName = manSelList.FirstOrDefault(x => x.Id == claim.Manager.Id)?.ShortName; //if (manager != null) //{ // claim.Manager.ShortName = manager.ShortName; //} //var auth = authorsList.SingleOrDefault(x => x.Key == claim.Author.Id); claim.Author = UserHelper.GetUserById(claim.Author.Id);//new UserBase() { Id= auth.Key, ShortName = auth.Value};// UserHelper.GetUserById(claim.Author.Id); } db.SetStatisticsForClaims(claims); } ViewBag.Claims = claims; ViewBag.DealTypes = db.LoadDealTypes(); ViewBag.ClaimStatus = db.LoadClaimStatus(); ViewBag.ProductManagers = adProductManagers; ViewBag.Managers = managers; ViewBag.ClaimCount = db.GetCountFilteredTenderClaims(filter); ViewBag.TenderStatus = db.LoadTenderStatus(); } catch (Exception ex) { ViewBag.Error = true.ToString().ToLower(); } return View(); }