Exemplo n.º 1
0
        // 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));
        }
Exemplo n.º 2
0
        // 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));
        }