Beispiel #1
0
        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());
            }
        }