public async Task <ActionResult <ResponseTaskDetail> > PostTask([FromBody] CreateTask createTask) { if (string.IsNullOrEmpty(createTask.Title)) { return(UnprocessableEntity(new List <ValidatorException> { new ValidatorException { Field = "Title", Message = "TITLE_IS_REQUIRED", Description = "Поле Название обязательное для заполнения" } })); } var email = User.Identity.Name; var author = await _context.Workers.SingleOrDefaultAsync(x => x.Email == email); var file = await _context.Files.SingleOrDefaultAsync(x => x.Id == createTask.FileId); var newTask = new Models.Task { Title = createTask.Title, Description = createTask.Description, ExpirationDate = DateTime.ParseExact(createTask.ExpiredDate, "dd.MM.yyyy", null), RewardCoins = createTask.RewardCoins, RewardXp = createTask.RewardXp, DifficultyId = createTask.DifficultyId, PriorirtyId = createTask.PriorityId, AttachedFileUrl = Constans.ApiUrl + Constans.FileDownloadPart + file.Name, Status = await _context.Statuses.SingleAsync(x => x.Name == "to_do"), WorkerId = createTask.WorkerId, AuthorId = author.Id }; _context.Tasks.Add(newTask); await _context.SaveChangesAsync(); var createdTask = await _context.Tasks .Include(x => x.Worker) .ThenInclude(x => x.Speciality) .Include(x => x.Status) .Include(x => x.Priorirty) .Include(x => x.Difficulty) .SingleAsync(x => x.Id == newTask.Id); var icon = await _context.Files.SingleOrDefaultAsync(x => x.Name == "Draft.png"); return(Ok(ResponseTaskDetail.FromApiTask(createdTask, icon: icon, author: author, file: file, avatarWorker: _getAvatar(createdTask.Worker.AvatarUrl), avatarAuthor: _getAvatar(author.AvatarUrl) ))); }
public async Task <ActionResult <ResponseTaskDetail> > GetMyTask(int id) { var email = User.Identity.Name; var task = await _context.Tasks .Include(x => x.Worker) .ThenInclude(x => x.Speciality) .Include(x => x.Priorirty) .Include(x => x.Difficulty) .Include(x => x.Status) .SingleOrDefaultAsync(x => x.Id == id && x.Worker.Email == email); if (task == null) { return(NotFound(new ExceptionInfo { Message = TasksErrorsMessages.TaskNotFound, Description = "Задача не найдена", })); } var fileName = task?.AttachedFileUrl?.Replace(Constans.ApiUrl + Constans.FileDownloadPart, string.Empty); var file = fileName != null ? await _context.Files.SingleOrDefaultAsync(x => x.Name == fileName) : null; var isExpired = DateTime.Now > task.ExpirationDate; var iconName = task.Status.IconUrl.Replace(Constans.ApiUrl + Constans.FileDownloadPart, string.Empty); var icon = isExpired ? await _context.Files.SingleOrDefaultAsync(x => x.Name == "Expired.png") : await _context.Files.SingleOrDefaultAsync(x => x.Name == iconName); var author = _context.Workers .Include(x => x.Speciality) .SingleOrDefault(x => x.Id == task.AuthorId); return(Ok(ResponseTaskDetail.FromApiTask(task, author: author, icon: icon, file: file, avatarWorker: _getAvatar(task.Worker.AvatarUrl), avatarAuthor: _getAvatar(author.AvatarUrl) ))); }