// GET: Reports/Details/5 public ActionResult Details(int?id) { if (id == null) { return(new HttpStatusCodeResult(HttpStatusCode.BadRequest)); } Report report = db.Reports.Find(id); if (report == null) { return(HttpNotFound()); } ReportsDetailsViewModel detailsViewModel = new ReportsDetailsViewModel { Id = report.Id, ReportDate = report.ReportDate, Title = report.Title, Content = report.Content, CreatedAt = report.CreatedAt, UpdatedAt = report.UpdatedAt, }; detailsViewModel.EmployeeName = db.Users.Find(report.EmployeeId).EmployeeName; detailsViewModel.isReportCreater = User.Identity.GetUserId() == report.EmployeeId; return(View(detailsViewModel)); }
// GET: Reports/Details/5 public ActionResult Details(int?id) { var MyId = User.Identity.GetUserId(); //いいねしているリストを作成 var likes = db.Likes .Where(l => l.EmployeeId == MyId) .Select(l => l.ReportId) .ToList(); if (id == null) { return(new HttpStatusCodeResult(HttpStatusCode.BadRequest)); } //BindしたIDをReportsDBと照合 Report report = db.Reports.Find(id); if (report == null) { return(HttpNotFound()); } ReportsDetailsViewModel detailsViewModel = new ReportsDetailsViewModel { Id = report.Id, ReportDate = report.ReportDate, WorkTime = report.WorkTime, LeaveTime = report.LeaveTime, Title = report.Title, CliantCompany = report.CliantCompany, CliantPIC = report.CliantPIC, CliantStatus = report.CliantStatus, Content = report.Content, CreatedAt = report.CreatedAt, UpdatedAt = report.UpdatedAt, Comment = report.Comment }; //いいねしてた判定 if (likes.Contains(report.Id)) { detailsViewModel.LikeFlg = LikeStatus.Like; } else { detailsViewModel.LikeFlg = LikeStatus.UnLike; } //承認フラグ判定 if (report.Accepting == 0) { detailsViewModel.AcceptFlg = AcceptStatus.UnAuthorize; } else { detailsViewModel.AcceptFlg = AcceptStatus.Auhorized; } detailsViewModel.EmployeeName = db.Users.Find(report.EmployeeId).EmployeeName; detailsViewModel.isReportCreater = User.Identity.GetUserId() == report.EmployeeId; return(View(detailsViewModel)); }
private ReportsDetailsViewModel UpdateDetailsViewModel(Reaction reaction) { //detailsビューモデル生成 Report report = db.Reports.Find(reaction.ReportId); ReportsDetailsViewModel detailsViewModel = new ReportsDetailsViewModel { Id = reaction.ReportId }; string loginUserId = User.Identity.GetUserId(); //リアクション //リアクション種類別GROUP分け var reactionsCategory = db.Reactions .Where(r => r.ReportId == report.Id) .GroupBy(r => r.Category); var reactionQuantity = new Dictionary <string, int>(); var reactionFlag = new Dictionary <string, bool>(); var reactionString = new Dictionary <string, string>(); //Dictionary初期値設定(null防止) foreach (ReactionCategoryEnum c in Enum.GetValues(typeof(ReactionCategoryEnum))) { reactionQuantity.Add(c.ToString(), 0); reactionFlag.Add(c.ToString(), false); } reactionString.Add("Like", "いいね"); reactionString.Add("Love", "超いいね"); reactionString.Add("Haha", "笑い"); reactionString.Add("Wow", "びっくり"); //Dictionaryに値設定 foreach (var rc in reactionsCategory) { reactionQuantity[rc.Key] = rc.Count(); foreach (var r in rc) { if (r.EmployeeId == loginUserId) { reactionFlag[rc.Key] = true; } } } detailsViewModel.ReactionQuantity = reactionQuantity; detailsViewModel.ReactionFlag = reactionFlag; detailsViewModel.ReactionString = reactionString; //ビューに返す return(detailsViewModel); }
public ActionResult Details([Bind(Include = "ReportId, EmployeeName")] int?ReportId, string EmployeeName) { if (ReportId == null) { return(new HttpStatusCodeResult(HttpStatusCode.BadRequest)); } Report report = db.Reports.Find(ReportId); if (report == null) { return(HttpNotFound()); } if (report.ApprovalStatus == 1) { report.ApprovalStatus = 0; } else { report.ApprovalStatus = 1; } db.Entry(report).State = EntityState.Modified; db.SaveChanges(); ReportsDetailsViewModel detailsViewModel = new ReportsDetailsViewModel { Id = (int)ReportId }; ApplicationUser reportUser = db.Users.Find(report.EmployeeId); string loginUserId = User.Identity.GetUserId(); detailsViewModel.EmployeeName = reportUser.EmployeeName; detailsViewModel.IsReportCreater = loginUserId == report.EmployeeId; detailsViewModel.ApprovalStatus = report.ApprovalStatus == 1 ? "承認済み" : "未承認"; string reportUserRole = UserManager.GetRoles(reportUser.Id).Count() != 0 ? UserManager.GetRoles(reportUser.Id)[0] : "Normal"; string loginUserRole = UserManager.GetRoles(loginUserId).Count() != 0 ? UserManager.GetRoles(loginUserId)[0] : "Normal"; if (RolesEnumUtil.GetRoleNum(reportUserRole) < RolesEnumUtil.GetRoleNum(loginUserRole)) { detailsViewModel.Approvable = true; } else { detailsViewModel.Approvable = false; } return(PartialView("_Approval", detailsViewModel)); }
public ActionResult Create([Bind(Include = "ReportId,Category")] Reaction reaction) { //受信できてるか if (ModelState.IsValid) { string UserId = User.Identity.GetUserId(); //旧リアクションあるか判定 //リアクション先一覧取得 List <Reaction> reactions = db.Reactions .Where(r => r.EmployeeId == UserId) .ToList(); if (reactions != null) //リアクション先あるなら { //旧リアクションインスタンス生成&検索 Reaction oldReaction = reactions.Find(r => r.ReportId == reaction.ReportId); //旧リアクションあるなら if (oldReaction != null) { //旧リアクション削除 DeleteReaction(oldReaction); //リアクション済みの種類と同種類のボタンがおされた if (oldReaction.Category == reaction.Category) { //ビュー更新 ReportsDetailsViewModel plainDetailsViewModel = UpdateDetailsViewModel(reaction); //旧リアクション消すだけで処理終了(ビューに返す) return(PartialView("_ReactionForm", plainDetailsViewModel)); } } } //新リアクション追加準備 reaction.EmployeeId = UserId; reaction.CreatedAt = DateTime.Now; //Contextに新しいオブジェクト追加 db.Reactions.Add(reaction); //実際のDBに反映 db.SaveChanges(); //ビュー更新 ReportsDetailsViewModel detailsViewModel = UpdateDetailsViewModel(reaction); //ビューに返す return(PartialView("_ReactionForm", detailsViewModel)); } return(new HttpStatusCodeResult(HttpStatusCode.BadRequest)); }
public ReportsDetailsViewModel GetReport(int id) { ReportsDetailsViewModel report = this.context.Reports .Where(r => r.Id == id) .Select(r => new ReportsDetailsViewModel { Id = r.Id, TaskTitle = r.Task.Title, Level = r.Task.AffectedSectors.Count(), Status = r.Status.ToString(), TaskDueDate = r.Task.DueDate.ToString("dd/MM/yyyy", CultureInfo.InvariantCulture), ReportedOn = r.ReportedOn.ToString("dd/MM/yyyy", CultureInfo.InvariantCulture), Reporter = r.Reporter.Username, Participants = r.Task.Participants, AffectedSectors = string.Join(", ", r.Task.AffectedSectors.Select(ts => ts.Sector)), Description = r.Task.Description }) .FirstOrDefault(); return(report); }
// GET: Reports/Details/5 public ActionResult Details(int?id) { if (id == null) { return(new HttpStatusCodeResult(HttpStatusCode.BadRequest)); } Report report = db.Reports.Find(id); if (report == null) { return(HttpNotFound()); } ReportsDetailsViewModel detailsViewModel = new ReportsDetailsViewModel { Id = report.Id, ReportDate = report.ReportDate, Title = report.Title, Content = report.Content, NegotiationStatus = report.NegotiationStatus, AttendanceTime = report.AttendanceTime, LeavingTime = report.LeavingTime, CreatedAt = report.CreatedAt, UpdatedAt = report.UpdatedAt }; ApplicationUser reportUser = db.Users.Find(report.EmployeeId); string loginUserId = User.Identity.GetUserId(); detailsViewModel.EmployeeName = reportUser.EmployeeName; detailsViewModel.IsReportCreater = loginUserId == report.EmployeeId; detailsViewModel.ApprovalStatus = report.ApprovalStatus == 1 ? "承認済み" : "未承認"; string reportUserRole = UserManager.GetRoles(reportUser.Id).Count() != 0 ? UserManager.GetRoles(reportUser.Id)[0] : "Normal"; string loginUserRole = UserManager.GetRoles(loginUserId).Count() != 0 ? UserManager.GetRoles(loginUserId)[0] : "Normal"; if (RolesEnumUtil.GetRoleNum(reportUserRole) < RolesEnumUtil.GetRoleNum(loginUserRole)) { detailsViewModel.Approvable = true; } else { detailsViewModel.Approvable = false; } //リアクション //リアクション種類別GROUP分け var reactionsCategory = db.Reactions .Where(r => r.ReportId == report.Id) .GroupBy(r => r.Category); var reactionQuantity = new Dictionary <string, int>(); var reactionFlag = new Dictionary <string, bool>(); var reactionString = new Dictionary <string, string>(); //Dictionary初期値設定(null防止) foreach (ReactionCategoryEnum c in Enum.GetValues(typeof(ReactionCategoryEnum))) { reactionQuantity.Add(c.ToString(), 0); reactionFlag.Add(c.ToString(), false); } reactionString.Add("Like", "いいね"); reactionString.Add("Love", "超いいね"); reactionString.Add("Haha", "笑い"); reactionString.Add("Wow", "びっくり"); //Dictionaryに値設定 foreach (var reactions in reactionsCategory) { reactionQuantity[reactions.Key] = reactions.Count(); foreach (var r in reactions) { if (r.EmployeeId == loginUserId) { reactionFlag[reactions.Key] = true; } } } detailsViewModel.ReactionQuantity = reactionQuantity; detailsViewModel.ReactionFlag = reactionFlag; detailsViewModel.ReactionString = reactionString; return(View(detailsViewModel)); }