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));
        }
Esempio n. 2
0
        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));
        }
Esempio n. 3
0
        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));
        }
Esempio n. 5
0
        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));
        }
Esempio n. 6
0
        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"));
        }