public ActionResult Index() { if (Request.IsAuthenticated) { //Получаем идентификатор текущего пользователя using (ApplicationDbContext aspdb = new ApplicationDbContext()) { using (RoleManager <ApplicationRole> roleManager = new RoleManager <ApplicationRole>(new RoleStore <ApplicationRole>(aspdb))) { var _UserId = System.Web.HttpContext.Current.User.Identity.GetUserId(); ApplicationRole currentRole = roleManager.FindById(aspdb.Users.FirstOrDefault(x => x.Id == _UserId).Roles.FirstOrDefault().RoleId); @ViewData["FirstName"] = aspdb.Users.FirstOrDefault(x => x.Id == _UserId).FirstName.ToString(); @ViewData["UserName"] = aspdb.Users.FirstOrDefault(x => x.Id == _UserId).UserName.ToString(); @ViewData["UserRole"] = currentRole.Description.ToString(); } } using (FRModel db = new FRModel()) { db.Database.Log = (s => System.Diagnostics.Debug.WriteLine(s)); List <int> WorkerIdsList = UsrWksMethods.GetWorkerId(db); // Получаем ID связанных сотрудников для пользователя в роли "Руководитель проекта" //Количество действующих проектов @ViewData["PrjCount"] = db.Projects.Where(x => (x.EndDateFact == null) && (WorkerIdsList.FirstOrDefault() == -1 || WorkerIdsList.Contains(x.Chief ?? 0))) .Count(); } } return(View()); }
public ActionResult LoadPD(int[] filterPrjIDs, int[] filterOrgIDs) { try { db.Database.Log = (s => System.Diagnostics.Debug.WriteLine(s)); //Debug Information==================== List <int> WorkerIdsList = UsrWksMethods.GetWorkerId(db); // Получаем ID связанного сотрудника для пользователя в роли "Руководитель проекта" var draw = Request.Form.GetValues("draw").FirstOrDefault(); var start = Request.Form.GetValues("start").FirstOrDefault(); var length = Request.Form.GetValues("length").FirstOrDefault(); var sortColumn = Request.Form.GetValues("columns[" + Request.Form.GetValues("order[0][column]").FirstOrDefault() + "][name]").FirstOrDefault(); var sortColumnDir = Request.Form.GetValues("order[0][dir]").FirstOrDefault(); int pageSize = length != null?Convert.ToInt32(length) : 0; int skip = start != null?Convert.ToInt32(start) : 0; int totalRecords = 0; string _projectname = Request.Form.GetValues("columns[0][search][value]").FirstOrDefault().ToString(); string _chname = Request.Form.GetValues("columns[1][search][value]").FirstOrDefault().ToString(); string _organizationname = Request.Form.GetValues("columns[2][search][value]").FirstOrDefault().ToString(); string _appointment = Request.Form.GetValues("columns[3][search][value]").FirstOrDefault().ToString(); string _userfn = Request.Form.GetValues("columns[4][search][value]").FirstOrDefault().ToString(); // Парсинг диапазона дат из DateRangePicker DateTime?_startagrdate = null; DateTime?_endagrdate = null; string _datetext = Request.Form.GetValues("columns[5][search][value]").FirstOrDefault().ToString(); if (!string.IsNullOrEmpty(_datetext)) { _datetext = _datetext.Trim(); int _length = (_datetext.Length) - (_datetext.IndexOf('-') + 2); string _startagrdatetext = _datetext.Substring(0, _datetext.IndexOf('-')).Trim(); string _endagrdatetext = _datetext.Substring(_datetext.IndexOf('-') + 2, _length).Trim(); _startagrdate = DateTime.Parse(_startagrdatetext); _endagrdate = DateTime.Parse(_endagrdatetext); } //-------------------------- string _sum = Request.Form.GetValues("columns[6][search][value]").FirstOrDefault().ToString(); string _periodtxt = Request.Form.GetValues("columns[7][search][value]").FirstOrDefault().ToString(); int _period; int.TryParse(_periodtxt, out _period); var _ads = (from plandebit in db.PlanDebits join prg in db.Projects on plandebit.ProjectId equals prg.id join ipa in db.ActivityIndexes on plandebit.ProjectId equals ipa.ProjectId into ipatmp from ipa in ipatmp.DefaultIfEmpty() join org in db.Organizations on plandebit.OrganizationId equals org.id join usr in db.IdentityUsers on plandebit.UserId equals usr.Id into usrtmp from usr in usrtmp.DefaultIfEmpty() join pperiod in db.PlanningPeriods on plandebit.PeriodId equals pperiod.PlanningPeriodId where (plandebit.Date >= _startagrdate && plandebit.Date <= _endagrdate || string.IsNullOrEmpty(_datetext)) && //Диапазон дат (prg.ShortName.Contains(_projectname) || string.IsNullOrEmpty(_projectname)) && (prg.ChiefName.Contains(_chname) || string.IsNullOrEmpty(_chname)) && (org.Title.Contains(_organizationname) || string.IsNullOrEmpty(_organizationname)) && (plandebit.Appointment.Contains(_appointment) || string.IsNullOrEmpty(_appointment)) && (pperiod.PlanningPeriodId == _period || string.IsNullOrEmpty(_periodtxt)) //Фильтрация записей по проектам для руководителей проектов && (WorkerIdsList.FirstOrDefault() == -1 || WorkerIdsList.Contains(prg.Chief ?? 0) || WorkerIdsList.Contains(prg.ProjectManager ?? 0)) select new { PlanDebitId = plandebit.PlanDebitId, Date = plandebit.Date, Sum = plandebit.Sum, ProjectId = plandebit.ProjectId, ipa = ipa.IPAValue, OrgId = org.id, Appointment = plandebit.Appointment, UserId = plandebit.UserId, UserFN = usr.LastName + " " + usr.FirstName.Substring(0, 1) + "." + usr.MiddleName.Substring(0, 1) + ".", ProjectName = prg.ShortName, ProjectType = prg.ProjectType, ChiefName = prg.ChiefName, ProjectManagerName = prg.ProjectManagerName, StartDatePlan = prg.StartDatePlan, StartDateFact = prg.StartDateFact, OrgName = org.Title, PeriodName = pperiod.PeriodName, planBenefit = prg.planBenefit, planExpand = prg.planExpand }).AsEnumerable().Select(x => new PlanDebitView { PlanDebitId = x.PlanDebitId, Date = x.Date, Sum = x.Sum, ProjectId = x.ProjectId, IPA = x.ipa, ProjectName = x.ProjectName, ProjectType = x.ProjectType, ChiefName = x.ChiefName, ProjectManagerName = x.ProjectManagerName, StartDatePlan = x.StartDatePlan, StartDateFact = x.StartDateFact, OrganizationId = x.OrgId, OrganizationName = x.OrgName, Appointment = x.Appointment, UserId = x.UserId, UserFN = x.UserFN, PeriodName = x.PeriodName, planBenefit = x.planBenefit, planExpand = x.planExpand }).ToList(); _ads = _ads.Where(x => (x.Sum.ToString().Contains(_sum) || string.IsNullOrEmpty(_sum)) && (x.UserFN.Contains(_userfn) || string.IsNullOrEmpty(_userfn)) && (filterPrjIDs == null || filterPrjIDs.Length == 0 || filterPrjIDs.Contains(x.ProjectId)) && (filterOrgIDs == null || filterOrgIDs.Length == 0 || filterOrgIDs.Contains(x.OrganizationId)) ).ToList(); //Список ID для передачи в ф-цию экспорта в Excel List <int> _IDsList = _ads.Select(x => x.PlanDebitId).ToList(); List <APBFilterIDs> _prjList = _ads.GroupBy(x => x.ProjectId) .Select(x => new APBFilterIDs { PrjId = x.Select(z => z.ProjectId).First(), ProjectName = x.Select(z => z.ProjectName).First(), IPA = x.Select(z => z.IPA).First() }).ToList(); List <ArticlesIDs> _organizationList = _ads.GroupBy(x => x.OrganizationId). Select(x => new ArticlesIDs { AtId = x.Select(a => a.OrganizationId).FirstOrDefault(), AtName = x.Select(a => a.OrganizationName).FirstOrDefault() }).ToList(); var jsonSerialiser = new JavaScriptSerializer(); var _prjListJson = jsonSerialiser.Serialize(_prjList); var _orgListJson = jsonSerialiser.Serialize(_organizationList); var _IDsListJson = jsonSerialiser.Serialize(_IDsList); if (!(string.IsNullOrEmpty(sortColumn) && string.IsNullOrEmpty(sortColumnDir))) { _ads = _ads.OrderBy(sortColumn + " " + sortColumnDir + ", PlanDebitId desc").ToList(); } else { _ads = _ads.OrderByDescending(x => x.Date).ThenByDescending(x => x.PlanDebitId).ToList(); } var fSum = _ads.Sum(x => x.Sum); totalRecords = _ads.Count(); var data = _ads.Skip(skip).Take(pageSize); return(Json(new { fsum = fSum , draw = draw , prjlist = _prjListJson , orglist = _orgListJson , idslist = _IDsListJson , sortcolumn = sortColumn , sortdir = sortColumnDir , recordsFiltered = totalRecords , recordsTotal = totalRecords , data = data , errormessage = "" }, JsonRequestBehavior.AllowGet)); } catch (Exception ex) { var errormessage = "Ошибка выполнения запроса!\n\r" + ex.Message + "\n\r" + ex.StackTrace; var data = ""; return(Json(new { data = data, errormessage = errormessage }, JsonRequestBehavior.AllowGet)); } }