コード例 #1
0
        public async Task ShowOffersCallBack(CallbackQueryEventArgs callback)
        {
            long chatid = callback.CallbackQuery.Message.Chat.Id;

            ShowOrdersDTO order = await provider.showOrderService.CurrentProduct(chatid);

            int currProductId = order.CurrentProductId;

            BuisnessTaskDTO task = await provider.buisnessTaskService.FindTaskByTaskId(currProductId);

            if (task == null)
            {
                throw new System.Exception("task cannot be null");
            }

            List <UserDTO> offers = await provider.offerService.GetUsersOffer(currProductId);

            if (offers.Count == 0)
            {
                await client.SendTextMessageAsync(chatid, "No tasks");

                return;
            }

            offers.ForEach(async(item) =>
            {
                string message = $"ChatId user: {item.ChatId}\n " +
                                 $"Tel:{item.FIO}";
                await client.SendTextMessageAsync(chatid, message, 0, false, false, 0, KeyboardHandler.InviteUserToDialog());
            });
        }
コード例 #2
0
        public async Task SendRequest(CallbackQueryEventArgs callback)
        {
            long chatid = callback.CallbackQuery.Message.Chat.Id;

            ShowOrdersDTO order = await provider.showOrderService.CurrentProduct(chatid);

            List <int> idProducts = await provider.showOrderService.GetIdTasksForUser(chatid);

            if (idProducts.Contains(order.CurrentProductId))
            {
                await client.SendTextMessageAsync(chatid, "It's your order");

                return;
            }

            BuisnessTaskDTO task = await provider.buisnessTaskService.FindTaskByTaskId(order.CurrentProductId);


            OfferDTO offer = new OfferDTO
            {
                ChatId = chatid,
                TaskId = task.Id
            };

            await provider.offerService.Create(chatid, offer);

            await client.SendTextMessageAsync(chatid, "Created");
        }
コード例 #3
0
        private async ValueTask <int?> NextProduct(long chatid, int MessageId, bool isBuisnessman = false)
        {
            ShowOrdersDTO   order = await showOrdersRepository.Get().FirstOrDefaultAsync(i => i.ChatId == chatid);;
            int             currIdProduct;
            BuisnessTaskDTO result;
            int             maxId;
            ShowOrdersDTO   _order;


            if (isBuisnessman)
            {
                if (order == null)
                {
                    _order = new ShowOrdersDTO
                    {
                        ChatId           = chatid,
                        CurrentProductId = await ProductWhithMinId(chatid, true),
                        MessageId        = MessageId
                    };
                    await showOrdersRepository.Create(_order);

                    return(_order.CurrentProductId);
                }
                currIdProduct = order.CurrentProductId;
                maxId         = await buisnessTaskRepository.MaxId(chatid);

                if (currIdProduct == maxId)
                {
                    return(null);
                }
                result = await buisnessTaskRepository.Get().FirstOrDefaultAsync(i => i.Id > currIdProduct && i.ChatId == chatid);

                return(result.Id);
            }

            if (order == null)
            {
                _order = new ShowOrdersDTO
                {
                    ChatId           = chatid,
                    CurrentProductId = await ProductWhithMinId(chatid, false),
                    MessageId        = MessageId
                };
                await showOrdersRepository.Create(_order);

                return(_order.CurrentProductId);
            }
            currIdProduct = order.CurrentProductId;
            maxId         = await buisnessTaskRepository.MaxId();

            if (currIdProduct == maxId)
            {
                return(null);
            }

            result = await buisnessTaskRepository.Get().FirstOrDefaultAsync(i => i.Id > currIdProduct);

            return(result.Id);
        }
コード例 #4
0
        public async ValueTask <int> GetMessageId(long chatid)
        {
            ShowOrdersDTO order = await showOrdersRepository.Get().FirstOrDefaultAsync(i => i.ChatId == chatid);

            if (order == null)
            {
                order = new ShowOrdersDTO()
                {
                    ChatId = chatid
                };
                await showOrdersRepository.Create(order);
            }
            return(order.MessageId);
        }
コード例 #5
0
        public async Task SendRequest(CallbackQueryEventArgs callback)
        {
            long chatid = callback.CallbackQuery.Message.Chat.Id;

            ShowOrdersDTO order = await provider.showOrderService.CurrentProduct(chatid);

            List <int> idProducts = await provider.showOrderService.GetIdTasksForUser(chatid);

            if (idProducts.Contains(order.CurrentProductId))
            {
                await client.SendTextMessageAsync(chatid, "Нельзя брать заказ у самого себя");

                return;
            }

            BuisnessTaskDTO task = await provider.buisnessTaskService.FindTaskByTaskId(order.CurrentProductId);

            if (task.ChatIdPerformer.HasValue)
            {
                await client.SendTextMessageAsync(chatid, "К сожалению,этот заказ уже выполняется другим пилотом");

                return;
            }

            OfferDTO offer = new OfferDTO
            {
                ChatId = chatid,
                TaskId = task.Id
            };

            UserDTO user = await provider.userService.FindById(chatid);



            await provider.offerService.Create(chatid, offer);

            string message = $"Пилот {user.FIO} хочет выполнить ваш заказ. " +
                             $"Данные по заказу:\n " +
                             $"Id заказа:{task.Id} \n " +
                             $"Описание заказа:{task.Description} \n " +
                             $"Сумма заказа:{task.Sum} \n " +
                             $"Подробнее можете посмотреть в разделе просмотра своих заявок";

            await client.SendTextMessageAsync(task.ChatId, message);

            await client.SendTextMessageAsync(chatid, "Заявка успеешно создана");
        }
コード例 #6
0
        public async Task ChangeMessageId(long chatid, int messageId)
        {
            ShowOrdersDTO order = await showOrdersRepository.Get().FirstOrDefaultAsync(i => i.ChatId == chatid);

            if (order == null)
            {
                order                  = new ShowOrdersDTO();
                order.ChatId           = chatid;
                order.MessageId        = messageId;
                order.CurrentProductId = 1;
                await showOrdersRepository.Create(order);

                return;
            }
            order.MessageId = messageId;
            await showOrdersRepository.Update(order);
        }
コード例 #7
0
        public async Task SetDefaultProduct(long chatid, bool isBuisnessMan = false)
        {
            ShowOrdersDTO order;

            if (isBuisnessMan)
            {
                order = await showOrdersRepository.Get().FirstOrDefaultAsync(i => i.ChatId == chatid);

                if (order == null)
                {
                    throw new System.Exception("order cannot be null");
                }
                order.CurrentProductId = await buisnessTaskRepository.MinId(chatid);

                await showOrdersRepository.Update(order);

                return;
            }

            order = await showOrdersRepository.Get().FirstOrDefaultAsync(i => i.ChatId == chatid);

            if (order == null)
            {
                throw new Exception("order cannot be null");
            }
            {
                order                  = new ShowOrdersDTO();
                order.ChatId           = chatid;
                order.CurrentProductId = await buisnessTaskRepository.MinId();

                await showOrdersRepository.Create(order);
            }

            order.CurrentProductId = await buisnessTaskRepository.MinId();

            await showOrdersRepository.Update(order);
        }
コード例 #8
0
        private async ValueTask <int?> PreviousProduct(long chatid, int MessageId, bool isBuisnessman = false)
        {
            int             min;
            ShowOrdersDTO   order;
            int             currIdProduct;
            BuisnessTaskDTO result;

            if (isBuisnessman)
            {
                min = await buisnessTaskRepository.MinId(chatid);

                order = await showOrdersRepository.Get().FirstOrDefaultAsync(i => i.ChatId == chatid);

                if (order == null)
                {
                    ShowOrdersDTO newOrder = new ShowOrdersDTO
                    {
                        ChatId           = chatid,
                        CurrentProductId = min,
                        MessageId        = MessageId
                    };
                    await showOrdersRepository.Create(newOrder);

                    return(null);
                }

                if (min == order.Id)
                {
                    return(null);
                }
                currIdProduct = order.Id;
                result        = await buisnessTaskRepository.Get().LastOrDefaultAsync(i => i.Id < currIdProduct && i.ChatId == chatid);

                return(result.Id);
            }

            min = await buisnessTaskRepository.MinId();

            order = await showOrdersRepository.Get().FirstOrDefaultAsync(i => i.ChatId == chatid);

            if (order == null)
            {
                ShowOrdersDTO _order = new ShowOrdersDTO
                {
                    ChatId           = chatid,
                    CurrentProductId = min,
                    MessageId        = MessageId,
                };
                await showOrdersRepository.Create(_order);

                return(null);
            }

            currIdProduct = order.CurrentProductId;

            if (min == currIdProduct)
            {
                return(null);
            }

            currIdProduct = order.CurrentProductId;
            result        = await buisnessTaskRepository.Get().LastOrDefaultAsync(i => i.Id < currIdProduct);

            return(result.Id);
        }
コード例 #9
0
        public async ValueTask <BuisnessTaskDTO> GetCurrentTask(long chatid)
        {
            ShowOrdersDTO order = await showOrdersRepository.Get().FirstOrDefaultAsync(i => i.ChatId == chatid);

            return(await buisnessTaskRepository.Get().FirstOrDefaultAsync(i => i.Id == order.CurrentProductId));
        }