// создание сущности задачи и добавление в БД
        public async Task <OperationDetailDTO <string> > CreateNewTaskAsync(TaskCreateModelDTO dto = null)
        {
            var detail = new OperationDetailDTO <string>();

            try
            {
                var currentUserEntity = await GetUserFromClaimsAsync();

                var teacherEntity = await _context.Teachers
                                    .Include(t => t.User)
                                    .Where(t => t.UserId == currentUserEntity.Id)
                                    .FirstOrDefaultAsync();

                if (dto != null)
                {
                    var newTask = TaskCreateModelDTO.Map(dto);
                    newTask.TeacherId = teacherEntity.Id;

                    await AddStudentsToTaskAsync(newTask, dto.StudentIds);

                    await _context.TaskModels.AddAsync(newTask);

                    await _context.SaveChangesAsync();

                    var createdTask = await _context.TaskModels.FirstOrDefaultAsync(t => t == newTask);

                    if (createdTask != null)
                    {
                        detail.Data      = createdTask.Id.ToString();
                        detail.Succeeded = true;
                    }
                    else
                    {
                        detail.ErrorMessages.Add(_serverErrorMessage + "При создании задачи что-то пошло не так.");
                    }
                    return(detail);
                }
                else
                {
                    detail.ErrorMessages.Add("Параметр модели создаваемой задачи был равен NULL.");
                    return(detail);
                }
            }
            catch (Exception e)
            {
                detail.ErrorMessages.Add(e.Message);
                return(detail);
            }
        }
        public async Task <IActionResult> UpdateTaskAsync([FromBody] TaskCreateModelDTO task = null)
        {
            var res = await _teacherService.UpdateTaskAsync(task);

            return(Ok(res));
        }
        // done
        public async Task <OperationDetailDTO> UpdateTaskAsync(TaskCreateModelDTO dto)
        {
            var detail = new OperationDetailDTO <TaskDTO>();

            try
            {
                if (dto == null)
                {
                    detail.ErrorMessages.Add("Объект входного параметра был равен NULL.");
                    return(detail);
                }

                var entity = await _context.TaskModels.FindAsync(dto.Id);

                if (entity == null)
                {
                    detail.ErrorMessages.Add("Задача не найдена.");
                    return(detail);
                }

                entity.Name        = dto.Name;
                entity.ContentText = dto.ContentText;
                entity.FinishDate  = dto.FinishDate;
                entity.UpdateDate  = DateTime.Now;

                if (entity.BeginDate < entity.FinishDate &&
                    !String.IsNullOrEmpty(dto.Name) && !String.IsNullOrEmpty(dto.ContentText))
                {
                    _context.TaskModels.Update(entity);
                    await _context.SaveChangesAsync();

                    detail.Succeeded = true;
                }

                else
                {
                    detail.ErrorMessages.Add("Данные задачи заполнены некорректно, попробуйте заново.");
                }



                //if (entity.BeginDate < dto.FinishDate && DateTime.Now < dto.FinishDate
                //    && !String.IsNullOrEmpty(dto.Name) && !String.IsNullOrEmpty(dto.ContentText))
                //{
                //    entity.Name = dto.Name;
                //    entity.ContentText = dto.ContentText;
                //    entity.FinishDate = dto.FinishDate;
                //    _context.TaskModels.Update(entity);
                //    await _context.SaveChangesAsync();
                //    detail.Succeeded = true;
                //}
                //else
                //{
                //    detail.ErrorMessages.Add("Данные задачи заполнены некорректно, попробуйте заново.");
                //}

                return(detail);
            }
            catch (Exception e)
            {
                detail.ErrorMessages.Add(_serverErrorMessage + e.Message);
                return(detail);
            }
        }