public async Task <IActionResult> Edit(long id, [Bind("Id,PlayTime,PauseTime,StopTime,RecordTime")] UserSubtask userSubtask) { if (id != userSubtask.Id) { return(NotFound()); } if (ModelState.IsValid) { try { _context.Update(userSubtask); await _context.SaveChangesAsync(); } catch (DbUpdateConcurrencyException) { if (!UserSubtaskExists(userSubtask.Id)) { return(NotFound()); } else { throw; } } return(RedirectToAction(nameof(Index))); } return(View(userSubtask)); }
public async Task <IActionResult> Create([Bind("Id,SubtaskId,Description,UserId,EstimatedHours,ElapsedHours,PendingHours,Observations,Status,TaskId,UserId")] Subtask subtask) { subtask.PendingHours = subtask.EstimatedHours; subtask.Status = "At risk"; AppUser user = new AppUser(); foreach (AppUser userChoice in _services.GetUsersByRoleDB("Technician")) { if (userChoice.Id == subtask.UserId) { user = userChoice; } } UserSubtask userSubtask = new UserSubtask { AppUsers = user, Subtasks = subtask }; if (ModelState.IsValid) { _context.Add(subtask); _context.UserSubtask.Add(userSubtask); await _context.SaveChangesAsync(); return(RedirectToAction(nameof(Index))); } return(View(subtask)); }
public async Task <IActionResult> UpdateUserTask([FromBody] UserTaskViewModel model) { if (!ModelState.IsValid) { return(ValidationProblem(ModelState)); } AppUser user = await userManager.FindByNameAsync(model.UserName); if (user == null) { return(NotFound()); } UserTask userTask = await context.UserTasks .Include(i => i.Subtasks) .FirstOrDefaultAsync(t => t.Id == model.Taskid); if (userTask == null) { return(NotFound()); } IList <UserSubtask> userSubtaskList = new List <UserSubtask>(); foreach (var subtask in model.UserSubtasks) { UserSubtask userSubtask = new UserSubtask { Name = subtask.Name, IsCompleted = subtask.IsCompleted, TaskStartDate = subtask.TaskStartDate, TaskEndDate = subtask.TaskEndDate }; userSubtaskList.Add(userSubtask); } userTask.Name = model.Name; userTask.IsCompleted = model.IsCompleted; userTask.TaskStartDate = model.TaskStartDate; userTask.TaskEndDate = model.TaskEndDate; userTask.Subtasks = userSubtaskList; try { context.UserTasks.Update(userTask); await context.SaveChangesAsync(); return(Ok()); } catch (Exception) { throw; } }
public async Task <IActionResult> Create([Bind("Id,PlayTime,PauseTime,StopTime,RecordTime")] UserSubtask userSubtask) { if (ModelState.IsValid) { _context.Add(userSubtask); await _context.SaveChangesAsync(); return(RedirectToAction(nameof(Index))); } return(View(userSubtask)); }
public async Task <IActionResult> Edit(long id, [Bind("Id,SubtaskId,Description,UserId,EstimatedHours,ElapsedHours,PendingHours,Observations,Status,TaskId,UserId")] Subtask subtask) { AppUser user = new AppUser(); foreach (AppUser userChoice in _services.GetUsersByRoleDB("Technician")) { if (userChoice.Id == subtask.UserId) { user = userChoice; } } UserSubtask userSubtask = new UserSubtask(); userSubtask = await _context.UserSubtask.FirstOrDefaultAsync(x => x.AppUsers.Id == user.Id && x.Subtasks.Id == subtask.Id); userSubtask.AppUsers = user; userSubtask.Subtasks = subtask; if (id != subtask.Id) { return(NotFound()); } if (ModelState.IsValid) { try { _context.Update(subtask); _context.UserSubtask.Update(userSubtask); await _context.SaveChangesAsync(); } catch (DbUpdateConcurrencyException) { if (!SubtaskExists(subtask.Id)) { return(NotFound()); } else { throw; } } return(RedirectToAction(nameof(Index))); } return(View(subtask)); }
public void UpdateSubtaskTimes(long subtaskId, string userId) { Subtask currentSubtask = _context.Subtask.Single(x => x.Id == subtaskId); UserSubtask currentUserSubtask = _context.UserSubtask.Single(x => x.AppUsers.Id == userId && x.Subtasks.Id == subtaskId); double timeConsumed = (currentUserSubtask.RecordTime.Hour / 1.00); timeConsumed += (currentUserSubtask.RecordTime.Minute / 60.00); timeConsumed += (currentUserSubtask.RecordTime.Second / 3600.00); timeConsumed = Math.Round(timeConsumed, 2); currentSubtask.ElapsedHours = timeConsumed; currentSubtask.PendingHours = currentSubtask.EstimatedHours - timeConsumed; if (currentSubtask.PendingHours < 0) { currentSubtask.PendingHours = 0; } _context.Subtask.Update(currentSubtask); }
public async Task <IActionResult> Stop(long id) { AppUser currentUser = new AppUser(); UserSubtask userSubtask = new UserSubtask(); Subtask currentSubtask = new Subtask(); DateTime stoptime = DateTime.Now; TimeSpan duration; currentUser = await _userManager.GetUserAsync(User); userSubtask = _context.UserSubtask.Single(x => x.AppUsers.Id == currentUser.Id && x.Subtasks.Id == id); currentSubtask = _context.Subtask.Single(x => x.Id == id); currentSubtask.Status = "Finished"; userSubtask = _context.UserSubtask.Single(x => x.AppUsers.Id == currentUser.Id && x.Subtasks.Id == id); userSubtask.StopTime = stoptime; duration = stoptime - userSubtask.PlayTime; userSubtask.RecordTime = userSubtask.RecordTime.Add(duration); _context.UserSubtask.Update(userSubtask); await _context.SaveChangesAsync(); _services.UpdateSubtaskTimes(id, currentUser.Id); await _context.SaveChangesAsync(); //Updating all the times in all the tables _services.UpdateTaskTimes(currentSubtask.TaskId); await _context.SaveChangesAsync(); Models.Task currentTask = _context.Task.Single(x => x.Id == currentSubtask.TaskId); _services.UpdateSubmoduleTimes(currentTask.SubmoduleId); int cont = 0; foreach (var subtask in currentTask.Subtasks) { if (subtask.Status == "Finished") { cont += 1; } } if (cont == currentTask.Subtasks.Count) { currentTask.Status = "Finished"; } await _context.SaveChangesAsync(); Submodule currentSubmodule = _context.Submodule.Single(x => x.Id == currentTask.SubmoduleId); _services.UpdateModuleTimes(currentSubmodule.ModuleId); cont = 0; foreach (var task in currentSubmodule.Tasks) { if (task.Status == "Finished") { cont += 1; } } if (cont == currentSubmodule.Tasks.Count) { currentSubmodule.Status = "Finished"; } await _context.SaveChangesAsync(); Module currentModule = _context.Module.Single(x => x.Id == currentSubmodule.ModuleId); _services.UpdateProjectTimes(currentModule.ProjectId); cont = 0; foreach (var submodule in currentModule.Submodules) { if (submodule.Status == "Off track") { cont += 1; } } if (cont == currentModule.Submodules.Count) { currentModule.Status = "Off track"; } await _context.SaveChangesAsync(); Project currentProject = _context.Project.Single(x => x.Id == currentModule.ProjectId); cont = 0; foreach (var module in currentProject.Modules) { if (module.Status == "Off track") { cont += 1; } } if (cont == currentProject.Modules.Count) { currentProject.Status = "Off track"; } await _context.SaveChangesAsync(); return(RedirectToAction("Index", "UserSubtasks")); }
public async Task <IActionResult> Play(long id) { //_context.UserSubtask.Single() AppUser currentUser = new AppUser(); UserSubtask userSubtask = new UserSubtask(); Subtask currentSubtask = new Subtask(); DateTime playtime = DateTime.Now; currentUser = await _userManager.GetUserAsync(User); userSubtask = _context.UserSubtask.Single(x => x.AppUsers.Id == currentUser.Id && x.Subtasks.Id == id); currentSubtask = _context.Subtask.Single(x => x.Id == id); userSubtask.PlayTime = playtime; userSubtask.Subtasks.Status = "On track"; currentSubtask.Status = "On track"; _context.UserSubtask.Update(userSubtask); _context.Subtask.Update(currentSubtask); await _context.SaveChangesAsync(); Models.Task currentTask = _context.Task.Single(x => x.Id == currentSubtask.TaskId); int cont = 0; foreach (var subtask in currentTask.Subtasks) { if (subtask.Status == "On track") { cont += 1; } } if (cont > 0) { currentTask.Status = "On track"; } await _context.SaveChangesAsync(); Submodule currentSubmodule = _context.Submodule.Single(x => x.Id == currentTask.SubmoduleId); cont = 0; foreach (var task in currentSubmodule.Tasks) { if (task.Status == "On track") { cont += 1; } } if (cont > 0) { currentSubmodule.Status = "On track"; } await _context.SaveChangesAsync(); Module currentModule = _context.Module.Single(x => x.Id == currentSubmodule.ModuleId); cont = 0; foreach (var submodule in currentModule.Submodules) { if (submodule.Status == "On track") { cont += 1; } } if (cont > 0) { currentModule.Status = "On track"; } await _context.SaveChangesAsync(); Project currentProject = _context.Project.Single(x => x.Id == currentModule.ProjectId); cont = 0; foreach (var module in currentProject.Modules) { if (module.Status == "On track") { cont += 1; } } if (cont > 0) { currentProject.Status = "On track"; } await _context.SaveChangesAsync(); return(RedirectToAction("Index", "UserSubtasks")); }