Example #1
0
        /// <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());
            }
        }
Example #2
0
        /// <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));
        }