public async Task <ActionResult> TaskSummary(int?taskId = null)
        {
            var user = await GetUser();

            if (taskId == null)
            {
                var newTask = new AddOrUpdateTaskCommand()
                {
                    OwnerId = user.Id
                };
                FillSelected();
                return(View("Task", newTask));
            }

            var task = await _dataContext.DashboardTasks.FirstOrDefaultAsync(x => x.TaskId == taskId);

            if (task.OwnerId != user.Id)
            {
                throw new HttpResponseException(StatusCodes.Status404NotFound);
            }

            var taskToEdit = new AddOrUpdateTaskCommand
            {
                OwnerId     = task.OwnerId,
                Name        = task.Name,
                Description = task.Description,
                TaskType    = task.TaskType
            };

            FillSelected();
            return(View("Task", taskToEdit));
        }
        public async Task <ActionResult> AddOrUpdateTask(AddOrUpdateTaskCommand command)
        {
            if (!ModelState.IsValid)
            {
                FillSelected();
                return(View("Task", command));
            }

            var user = await GetUser();

            var task = await _dataContext.DashboardTasks.FirstOrDefaultAsync(x => x.TaskId == command.TaskId);

            if (task == null)
            {
                var newTask = new DashboardTask
                {
                    OwnerId     = user.Id,
                    Name        = command.Name,
                    Description = command.Description,
                    TaskType    = command.TaskType,
                    TaskStatus  = TaskStatus.ToDo
                };

                await _dataContext.DashboardTasks.AddAsync(newTask);

                await _dataContext.SaveChangesAsync();

                return(RedirectToAction("GetDashboard"));
            }

            if (task.OwnerId != user.Id)
            {
                throw new HttpResponseException(StatusCodes.Status404NotFound);
            }

            task.OwnerId     = user.Id;
            task.Name        = command.Name;
            task.Description = command.Description;
            task.TaskType    = command.TaskType;
            task.TaskStatus  = TaskStatus.ToDo;

            await _dataContext.SaveChangesAsync();

            return(RedirectToAction("GetDashboard"));
        }