public JsonResult SearchWishes() { try { List <int> userRoles = (List <int>)Session["userRoles"]; int current_user_id = Convert.ToInt32(Session["userID"]); int user_id = (Request.Form["search_user_id"] == "") ? 0 : Convert.ToInt32(Request.Form["search_user_id"]); int report_type_id = (Request.Form["search_report_type_id"] == "") ? 0 : Convert.ToInt32(Request.Form["search_report_type_id"]); string report_type_name = (report_type_id != 0) ? db.Report_types.Where(x => x.report_type_id == report_type_id).SingleOrDefault().report_type_name : String.Empty; string status = Request.Form["search_status"].Trim(); DateTime? startdate = (Request.Form["search_startdate"] != "") ? DateTime.ParseExact(Request.Form["search_startdate"] + " 00:00:00", "yyyy-MM-dd hh:mm:ss", CultureInfo.InvariantCulture) : (DateTime?)null; DateTime? enddate = (Request.Form["search_enddate"] != "") ? (DateTime.ParseExact(Request.Form["search_enddate"] + " 00:00:00", "yyyy-MM-dd hh:mm:ss", CultureInfo.InvariantCulture)).AddDays(1) : (DateTime?)null; List <int> places = new List <int>(Request.Form["search_places"].Split(',').Select(Int32.Parse).ToList()); if ((user_id != 0) || (report_type_id != 0) || (!String.IsNullOrEmpty(status)) || (startdate != null) || (enddate != null) || (places[0] != 0)) { List <int> wish_places = new List <int>(); if (places[0] != 0) { wish_places = db.Tasks.Where(x => places.Contains(x.task_place_id)).Select(x => x.task_wish_id).ToList(); } List <WishViewModel> WishList = db.Wishes.OrderByDescending(x => x.wish_createdate) .Where(x => (user_id != 0) ? (x.wish_user_id == user_id) : (x.wish_user_id == x.wish_user_id)) .Where(x => (report_type_id != 0) ? (x.wish_report_type_name == report_type_name) : x.wish_report_type_name == x.wish_report_type_name) .Where(x => (!String.IsNullOrEmpty(status)) ? (x.wish_status == status) : x.wish_status == x.wish_status) .Where(x => (startdate != null) ? (x.wish_createdate >= startdate) : x.wish_createdate == x.wish_createdate) .Where(x => (enddate != null) ? (x.wish_createdate <= enddate) : x.wish_createdate == x.wish_createdate) .Where(x => (wish_places.Count != 0) ? (wish_places.Contains(x.wish_id)) : x.wish_id == x.wish_id) .Select(x => new WishViewModel { Wish_id = x.wish_id, Wish_createdate = x.wish_createdate, Wish_report_type_name = x.wish_report_type_name, User_id = x.wish_user_id, Wish_status = x.wish_status }).ToList(); List <WishViewModel> ResultList = new List <WishViewModel>(); //Проверяем доступы foreach (var w in WishList) { //Суперадмин или админ if (userRoles.Contains(1) || userRoles.Contains(2)) { ResultList.Add(w); } else { Wish_report_relation wrr = db.Wish_report_relation.Where(x => x.wrr_wish_id == w.Wish_id).SingleOrDefault(); if (wrr != null) { switch (wrr.wrr_access_type) { //Задание видно для всех case 0: ResultList.Add(w); break; //Для пользователей отчета case 1: if (db.Report_user_relation.Where(x => x.rur_report_type_id == wrr.wrr_report_type_id && x.rur_user_id == current_user_id).Count() != 0) { ResultList.Add(w); } break; //Для конкретных пользователей case 2: if (db.Wish_user_relation.Where(x => x.wur_wish_id == w.Wish_id && x.wur_user_id == current_user_id).Count() != 0) { ResultList.Add(w); } break; } } else { ResultList.Add(w); } } } foreach (var w in ResultList) { w.User_name = db.Users.Where(x => x.user_id == w.User_id).Select(x => ((x.user_surname ?? "") + " " + (x.user_name ?? "") + " " + (x.user_patronymic ?? "")).Trim()).SingleOrDefault(); switch (w.Wish_status) { case "new": w.Wish_status = "новое"; break; case "work": w.Wish_status = "в работе"; break; case "wait": w.Wish_status = "ожидание"; break; case "fail": w.Wish_status = "завершено с ошибкой"; break; case "done": w.Wish_status = "завершено"; break; default: w.Wish_status = "неизвестно"; break; } } return(Json(ResultList, JsonRequestBehavior.AllowGet)); } return(Json(new List <WishViewModel>(), JsonRequestBehavior.AllowGet)); } catch (Exception ex) { throw ex; } }
public JsonResult RepeatWish() { var result = -1; try { //Вытаскиваем данные из запроса int wish_id = Convert.ToInt32(Request.Form["wish_id"]); int user_id = Convert.ToInt32(Request.Form["user_id"]); int repeat_type = Convert.ToInt32(Request.Form["repeat_type"]); DateTime deadlineValue = DateTime.ParseExact(Request.Form["deadlineValue"].ToString(), "yyyy-MM-ddTHH:mm", System.Globalization.CultureInfo.InvariantCulture); int? attemptsCount = Request.Form["attemptsCount"].ToString() != "null" ? Convert.ToInt32(Request.Form["attemptsCount"].ToString()) : (int?)null; List <parameters> ParamList = JsonConvert.DeserializeObject <List <parameters> >(Request.Form["parameters"].ToString()); List <places> PlaceList = JsonConvert.DeserializeObject <List <places> >(Request.Form["places"].ToString()); Wishes w = db.Wishes.Where(x => x.wish_id == wish_id).SingleOrDefault(); int report_type_id = db.Wish_report_relation.Where(x => x.wrr_wish_id == wish_id).SingleOrDefault().wrr_report_type_id; //Доступы к просмотру int[] Access_users = Array.ConvertAll(Request.Form.GetValues("access_user"), s => int.Parse(s)); string wish_report_type_xml = w.wish_report_type_xml; string new_xml = String.Empty; List <ParameterType> ParameterList = new List <ParameterType>(); if (!String.IsNullOrEmpty(wish_report_type_xml)) { XmlSerializer serializer = new XmlSerializer(typeof(ReportModel)); using (TextReader reader = new StringReader(wish_report_type_xml)) { ReportModel report = (ReportModel)serializer.Deserialize(reader); foreach (var p in report.Parameters) { ParameterList.Add(new ParameterType { Name = p.ParameterName, Alias = p.ParameterAlias, Type = p.ParameterDataType, Value = (p.ParameterDataType == "startdate") || (p.ParameterDataType == "enddate") ? DateTime.ParseExact(ParamList.Where(x => x.name == p.ParameterName).SingleOrDefault().value, "yyyy-MM-ddTHH:mm", System.Globalization.CultureInfo.InvariantCulture).ToString("yyyy-MM-dd HH:mm:ss") : ParamList.Where(x => x.name == p.ParameterName).SingleOrDefault().value }); } new_xml = "<?xml version=\"1.0\" encoding=\"utf-16\"?>"; new_xml += "<TableDataSource SelectCommand=\"" + SecurityElement.Escape(report.SelectCommand) + "\">"; foreach (var c in report.Columns) { new_xml += "<Column Name=\"" + c.ColumnName + "\" Type=\"" + c.ColumnType + "\" Alias=\"" + c.ColumnAlias + "\" />"; } if (ParamList.Count != 0) { foreach (var p in ParameterList) { new_xml += "<CommandParameter Name=\"" + p.Name + "\" Alias=\"" + p.Alias + "\" DataType=\"" + p.Type + "\" Value=\"" + p.Value + "\" />"; } } new_xml += "</TableDataSource>"; } } else { return(Json(result, JsonRequestBehavior.AllowGet)); } //Обновляем задание if (repeat_type == 0) { w.wish_createdate = Convert.ToDateTime(DateTime.Now); w.wish_deadline = deadlineValue; w.wish_total_attempts = attemptsCount; w.wish_status = "not_ready"; w.wish_user_id = user_id; db.SaveChanges(); //Обновляем задачи foreach (var p in PlaceList) { Tasks Task = db.Tasks.Where(x => x.task_wish_id == wish_id && x.task_place_id == p.id).SingleOrDefault(); Task.task_startdate = DateTime.ParseExact(p.startdate, "yyyy-MM-ddTHH:mm", System.Globalization.CultureInfo.InvariantCulture); Task.task_number_attempts = 0; Task.task_status = "new"; Task.task_last_error_text = null; } db.SaveChanges(); //Обновляем доступы Wish_report_relation wrr = db.Wish_report_relation.Where(x => x.wrr_wish_id == wish_id).SingleOrDefault(); if (Access_users.Length != 0) { wrr.wrr_access_type = (short)((Access_users[0] == -1) ? 1 : (Access_users[0] == 0) ? 0 : 2); db.SaveChanges(); //Конкретные пользователи if (wrr.wrr_access_type == 2) { //Пользователи ДО редактирования List <Wish_user_relation> Wur = new List <Wish_user_relation>(); foreach (Wish_user_relation wur in db.Wish_user_relation.Where(x => x.wur_wish_id == wish_id)) { Wur.Add(wur); } foreach (Users u in db.Users) { if (Access_users.Contains(u.user_id)) { if (Wur.Find(x => x.wur_user_id == u.user_id) == null) { db.Wish_user_relation.Add(new Wish_user_relation() { wur_wish_id = (int)wish_id, wur_user_id = u.user_id }); } } else { if (Wur.Find(x => x.wur_user_id == u.user_id) != null) { db.Wish_user_relation.Remove(Wur.Find(x => x.wur_user_id == u.user_id)); } } } db.SaveChanges(); } } //Доступ для всех else { wrr.wrr_access_type = 0; db.SaveChanges(); } w.wish_status = "new"; db.SaveChanges(); result = wish_id; } else { //Создаем задание Wishes Wish = new Wishes(); Wish.wish_createdate = Convert.ToDateTime(DateTime.Now); Wish.wish_deadline = deadlineValue; Wish.wish_total_attempts = attemptsCount; Wish.wish_report_type_name = w.wish_report_type_name; Wish.wish_status = "not_ready"; Wish.wish_report_type_xml = new_xml; Wish.wish_user_id = user_id; db.Wishes.Add(Wish); db.SaveChanges(); //Создаем задачи foreach (var p in PlaceList) { Tasks Task = new Tasks(); Task.task_startdate = DateTime.ParseExact(p.startdate, "yyyy-MM-ddTHH:mm", System.Globalization.CultureInfo.InvariantCulture);; Task.task_wish_id = Wish.wish_id; Task.task_place_id = p.id; Task.task_number_attempts = 0; Task.task_status = "new"; Task.task_last_error_text = null; db.Tasks.Add(Task); } //Создаем доступы if (Access_users.Length != 0) { Wish_report_relation wrr = new Wish_report_relation(); wrr.wrr_wish_id = Wish.wish_id; wrr.wrr_report_type_id = report_type_id; wrr.wrr_access_type = (short)((Access_users[0] == -1) ? 1 : (Access_users[0] == 0) ? 0 : 2); db.Wish_report_relation.Add(wrr); db.SaveChanges(); //Конкретные пользователи if (wrr.wrr_access_type == 2) { foreach (int item in Access_users) { Wish_user_relation wur = new Wish_user_relation(); wur.wur_wish_id = Wish.wish_id; wur.wur_user_id = item; db.Wish_user_relation.Add(wur); } db.SaveChanges(); } } //Доступ для всех else { Wish_report_relation wrr = new Wish_report_relation(); wrr.wrr_wish_id = Wish.wish_id; wrr.wrr_report_type_id = report_type_id; wrr.wrr_access_type = 0; db.Wish_report_relation.Add(wrr); db.SaveChanges(); } Wish.wish_status = "new"; db.SaveChanges(); result = Wish.wish_id; } } catch (Exception ex) { throw ex; } return(Json(result, JsonRequestBehavior.AllowGet)); }
public JsonResult SetAccess() { int result = 0; try { //Доступы к просмотру int[] Access_users = Array.ConvertAll(Request.Form.GetValues("access_user"), s => int.Parse(s)); int wish_id = Convert.ToInt32(Request.Form["wish_id"]); int access_type = Convert.ToInt32(Request.Form["access_type"]); Wish_report_relation wrr = db.Wish_report_relation.Where(x => x.wrr_wish_id == wish_id).SingleOrDefault(); if (wrr == null) { result = 1; return(Json(result, JsonRequestBehavior.AllowGet)); } wrr.wrr_access_type = (short)access_type; //Выбранные пользователи if (access_type == 2) { List <Wish_user_relation> Wur = new List <Wish_user_relation>(); foreach (Wish_user_relation wur in db.Wish_user_relation.Where(x => x.wur_wish_id == wish_id)) { Wur.Add(wur); } foreach (Users user in db.Users) { if (Access_users.Contains(user.user_id)) { if (Wur.Find(x => x.wur_user_id == user.user_id) == null) { db.Wish_user_relation.Add(new Wish_user_relation() { wur_user_id = user.user_id, wur_wish_id = wish_id }); } } else { if (Wur.Find(x => x.wur_user_id == user.user_id) != null) { db.Wish_user_relation.Remove(Wur.Find(x => x.wur_user_id == user.user_id)); } } } } db.SaveChanges(); } catch (Exception ex) { throw ex; } return(Json(result, JsonRequestBehavior.AllowGet)); }