/// <summary> /// Метод получает список ставок к заданию. /// </summary> /// <param name="taskId">Id задания, для которого нужно получить список ставок.</param> /// <param name="account">Логин пользователя.</param> /// <returns>Список ставок.</returns> public async Task <GetRespondResultOutput> GetRespondsAsync(long taskId, string account) { try { if (taskId == 0) { throw new NullTaskIdException(); } IEnumerable respondsList = await GetRespondsListAsync(taskId); GetRespondResultOutput result = new GetRespondResultOutput(); // Находит Id исполнителя. string userId = await _userService.GetUserIdByLogin(account); // Приведет к типу коллекции GetRespondResultOutput. foreach (object respond in respondsList) { string jsonString = JsonSerializer.Serialize(respond); RespondOutput resultObject = JsonSerializer.Deserialize <RespondOutput>(jsonString); // Если исполнитель оставлял ставку к данному заданию, то проставит флаг видимости кнопки "ИЗМЕНИТЬ СТАВКУ", иначе скроет ее. if (resultObject.ExecutorId.Equals(userId)) { resultObject.IsVisibleButton = true; } // Выберет приглашение. InviteEntity invite = await _postgre.Invities .Where(c => c.TaskId == taskId && c.ExecutorId.Equals(resultObject.ExecutorId)) .FirstOrDefaultAsync(); if (invite != null && !string.IsNullOrEmpty(invite.ExecutorId) && invite.TaskId > 0) { if (invite.IsAccept) { resultObject.IsSendInvite = true; } if (invite.IsCancel) { resultObject.IsCancelInvite = true; } } result.Responds.Add(resultObject); } return(result); } 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()); } }
/// <summary> /// Метод проверит, принял ли исполнитель в работу задание и не отказался ли от него. /// </summary> /// <param name="taskId">Id задания.</param> /// <param name="account">Логин пользователя.</param> /// <returns>Если все хорошо, то вернет список ставок к заданию, в котором будет только ставка исполнителя, которого выбрали и который принял в работу задание.</returns> public async Task <GetRespondResultOutput> CheckAcceptAndNotCancelInviteTaskAsync(long taskId, string account) { try { if (taskId <= 0) { throw new NullTaskIdException(); } // Выберет задание. Задание должно быть принято в работу. var task = await _postgre.Invities .Where(c => c.TaskId == taskId && c.IsAccept.Equals(true)) .FirstOrDefaultAsync(); if (task == null) { return(new GetRespondResultOutput()); } // Получит список ставок к заданию. GetRespondResultOutput responds = await GetRespondsAsync(taskId, account); // Если ставок нет. if (!responds.Responds.Any()) { return(new GetRespondResultOutput()); } // Оставит только ставку исполнителя, который принял задание в работу. responds.Responds.RemoveAll(item => !item.ExecutorId.Equals(task.ExecutorId)); return(responds); } catch (Exception ex) { Console.WriteLine(ex); var logger = new Logger(_db, ex.GetType().FullName, ex.Message.ToString(), ex.StackTrace); await logger.LogCritical(); throw; } }
public async Task <IActionResult> CheckAcceptAndNotCancelInviteTaskAsync([FromBody] CheckPayInput payInput) { GetRespondResultOutput result = await _taskService.CheckAcceptAndNotCancelInviteTaskAsync(payInput.TaskId, GetUserName()); return(Ok(result)); }
public async Task <IActionResult> GetRespondsAsync([FromBody] GetRespondInput getRespondInput) { GetRespondResultOutput respondsList = await _taskService.GetRespondsAsync(getRespondInput.TaskId, GetUserName()); return(Ok(respondsList)); }