public async Task <IActionResult> RespondTaskAsync([FromBody] RespondInput taskInput) { bool isRespond = await _executorService.RespondAsync(taskInput.TaskId, taskInput.Price, taskInput.IsTemplate, taskInput, taskInput.Comment, GetUserName()); return(Ok(isRespond)); }
/// <summary> /// Метод оставляет ставку к заданию. /// </summary> /// <param name="taskId">Id задания, к которому оставляют ставку.</param> /// <param name="price">Цена ставки (без комиссии 22%).</param> /// <param name="comment">Комментарий к ставке.</param> /// <param name="isTemplate">Флаг сохранения как шаблон.</param> /// <param name="template">Данные шаблона.</param> /// <param name="userName">Имя юзера.</param> public async Task <bool> RespondAsync(long?taskId, decimal?price, bool isTemplate, RespondInput template, string comment, string userName) { try { if (taskId == null) { throw new NullTaskIdException(); } // Находит задание по его TaskId. TaskEntity task = await _postgre.Tasks.Where(t => t.TaskId == taskId).FirstOrDefaultAsync(); if (task == null) { throw new NotFoundTaskIdException(taskId); } // Находит Id исполнителя, который делает ставку к заданию. UserEntity user = await _userService.GetUserByLogin(userName); // Добавит новую ставку. await _postgre.Responds.AddAsync(new RespondEntity() { TaskId = taskId, Price = price, Comment = comment, ExecutorId = user.Id }); await _postgre.SaveChangesAsync(); return(true); } catch (Exception ex) { Logger _logger = new Logger(_db, ex.GetType().FullName, ex.Message.ToString(), ex.StackTrace); await _logger.LogCritical(); throw new Exception(ex.Message.ToString()); } }