public ActionResult Update() { if (!Request.IsAjaxRequest()) { return(new EmptyResult()); } // 新規の場合、0 var id = V.ParseInt(Request.Form["ID"]) ?? 0; var err = Validate(); if (err.Any()) { return(Json(new { err = err })); } using (HMPZDDB db = new HMPZDDB()) { Accuracy data = null; if (id == 0) { data = new Accuracy(); // TODO これはバグってるな。。。 data.Created = data.Updated = DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss"); // TODO ログインユーザ data.CreatedBy = data.UpdatedBy = DateTime.Now; } else { data = db.Accuracy.Where(d => d.DeleteFlg != 1 && d.ID == id).FirstOrDefault(); // TODO これはバグってるな。。。 data.Updated = DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss"); // TODO ログインユーザ data.UpdatedBy = DateTime.Now; } data.Order = V.ParseInt(Request.Form["Order"]) ?? 0; // data.Status if (id == 0) { db.Accuracy.Add(data); id = data.ID; } db.SaveChanges(); } return(Json(new { res = "ok", id = id })); }
/// <summary> /// 値のチェック /// </summary> /// <returns></returns> private String[] Validate() { var err = new List <String>(); var id = V.ParseInt(Request.Form["ID"]) ?? 0; if ((V.ParseInt(Request.Form["TeamID"]) ?? 0) == 0) { err.Add("チームを選択してください"); } // 空 if (!(Request.Form["UserID"] ?? "").Split(',').Any()) { err.Add("ユーザを選択してください"); } return(err.ToArray()); }
/// <summary> /// 値のチェック /// </summary> /// <returns></returns> private String[] Validate() { var err = new List <String>(); var id = V.ParseInt(Request.Form["ID"]) ?? 0; if ((V.ParseInt(Request.Form["Order"]) ?? 0) == 0) { err.Add("表示順を入力してください"); } if (string.IsNullOrWhiteSpace(Request.Form["AccuracyName"])) { err.Add("ステータスを入力してください"); } return(err.ToArray()); }
/// <summary> /// GridData /// </summary> /// <returns></returns> public ActionResult GridData() { if (!Request.IsAjaxRequest()) { return(new EmptyResult()); } // 総件数 var total = 0; // 1ページの表示件数。どちらで持つべきか?ひとまずサーバで定義 var limit = 20; // 現状のページ var page = 1; if (!string.IsNullOrWhiteSpace(Request.QueryString["page"])) { int.TryParse(Request.QueryString["page"], out page); } // 検索文字列 var words = Request.QueryString["S_WORDS"] ?? ""; // 表示ヘッダー var header = new[] { new { name = "DepartmentName", title = "部署" }, new { name = "TeamName", title = "チーム" }, new { name = "UserName", title = "担当" }, new { name = "Del_", title = "" } }; //var list = Enumerable.Range(0, 0).ToList(); var db = new HMPZDDB(); // データ一式。JOINさせる var list = db.TeamRepresentatives.Where(d => d.DeleteFlg != 1) .Join(db.Teams.Where(d => d.DeleteFlg != 1), d1 => d1.TeamID, d2 => d2.ID, (d1, d2) => new { ID = d1.ID, DepartmentName = d1.DepartmentName, FirstName = d1.FirstName, LastName = d1.LastName, TeamName = d2.TeamName }) .ToList(); if (!string.IsNullOrWhiteSpace(Request.QueryString["S_WORDS"])) { var wordList = V.ToSearch(Request.QueryString["S_WORDS"] ?? "").Replace(" ", " ").Split(' '); list = list.Where(d => { foreach (var word in wordList) { var name = V.ToSearch(d.DepartmentName + " " + d.TeamName + " " + d.FirstName + " " + d.LastName); if (!(name.IndexOf(word) >= 0)) { return(false); } } return(true); }).ToList(); } // 総件数 total = list.Count; // ページング+データ更新 // slicgrid は null を戻してはいけない var rows = list.Skip((page - 1) * limit).Take(limit) .Select(d => new { ID = d.ID, DepartmentName = d.DepartmentName ?? "", TeamName = d.TeamName ?? "", UserName = d.LastName + " " + d.FirstName }) .ToList(); // 総ページ数 var totalPage = 0; if (total > 0) { var n = total / limit; totalPage = (int)Math.Ceiling((double)total / limit); } return(Json(new { header = header, rows = rows, total = total, page = page, totalPage = totalPage }, JsonRequestBehavior.AllowGet)); }
public ActionResult Update() { if (!Request.IsAjaxRequest()) { return(new EmptyResult()); } // 新規の場合、0 var id = V.ParseInt(Request.Form["ID"]) ?? 0; var err = Validate(); if (err.Any()) { return(Json(new { err = err })); } using (HMPZDDB db = new HMPZDDB()) { // チーム情報 var teamId = V.ParseInt(Request.Form["TeamID"]) ?? 0; // 組織情報 Teams team = null; Organizations organization = null; if (teamId > 0) { team = db.Teams.Where(d => d.DeleteFlg != 1 && d.ID == teamId).FirstOrDefault(); } if (team != null && !string.IsNullOrWhiteSpace(team.OrganizationID)) { organization = db.Organizations.Where(d => d.DeleteFlg != 1 && d.ID == team.OrganizationID).FirstOrDefault(); } // ユーザ情報 var userIdList = (Request.Form["UserIDList"] ?? "").Split(','); foreach (var row in userIdList) { // 既存のユーザID x TeamID 情報は一度消す var teamRepresentative = db.TeamRepresentatives.Where(d => d.DeleteFlg != 1 && d.TeamID == teamId && d.UserID == row).FirstOrDefault(); if (teamRepresentative != null) { db.TeamRepresentatives.Remove(teamRepresentative); } // 新規として追加 TeamRepresentatives data = new TeamRepresentatives(); data.Created = data.Updated = DateTime.Now; // TODO ログインユーザ data.CreatedBy = data.UpdatedBy = ""; // チーム情報 data.TeamID = teamId; // 組織情報 if (organization != null) { data.CompanyName = organization.CompanyName ?? ""; data.DivisionGroupName = organization.DivisionGroupCommonName; data.DivisionName = organization.DivisionAbbrName; data.DepartmentName = organization.DepartmentAbbrName; } Users user = db.Users.Where(d => d.DeleteFlg != 1 && d.ID == row).FirstOrDefault(); if (user == null) { continue; } data.UserID = user.ID; data.FirstName = user.FirstName; data.LastName = user.LastName; db.TeamRepresentatives.Add(data); } db.SaveChanges(); } return(Json(new { res = "ok" })); }