Exemple #1
0
        public async Task <IActionResult> Create(MergeModel model)
        {
            var assignedBy = UserMgr.GetUserId(HttpContext.User);

            Bug bug = model.Bugs;

            bug.BugCreationTimeStamp = DateTime.Now;
            bug.AssignedById         = Convert.ToInt32(assignedBy);

            _context.Add(bug);
            await _context.SaveChangesAsync();

            var user           = UserMgr.Users.FirstOrDefault(m => m.Id == bug.AssignedToId);
            var userAssignedBy = UserMgr.Users.FirstOrDefault(m => m.Id == bug.AssignedById);
            var role           = await UserMgr.GetRolesAsync(user);

            var roleAssignedBy = await UserMgr.GetRolesAsync(userAssignedBy);

            //check if the user assigned to the bug is already in the bug history model
            var userAssigned = _context.BugAssignmentHistories.FirstOrDefault(m =>
                                                                              m.AssignedToId == bug.AssignedToId && m.BugId == bug.BugId);

            var notification = new Notification
            {
                NotificationType    = NotificationTypeEnum.BugAssigned,
                NotificationMessage = $"Hey {user.FirstName}, you've" +
                                      " been assigned a new Bug by " +
                                      $"({roleAssignedBy[0]}) {userAssignedBy.UserName}!",
                ReceipientId = bug.AssignedToId,
                SenderId     = bug.AssignedById,
                BugId        = bug.BugId
            };

            _context.Add(notification);

            var bugHistory = new BugAssignmentHistory
            {
                BugId        = bug.BugId,
                BugStatus    = bug.BugStatus,
                AssignedToId = bug.AssignedToId,
                RoleName     = role[0]
            };

            if (userAssigned == null)
            {
                _context.Add(bugHistory);
            }
            else
            {
                _context.Update(bugHistory);
            }


            await _context.SaveChangesAsync();

            return(RedirectToAction("Index", "Bug"));
        }