Exemplo n.º 1
0
        public async Task <ActionResult> SetNotification(Guid studentId, [FromBody] NotificationsModel notificationsModel)
        {
            // check if student exists
            // update notifications
            //return 204
            var studentExists = _repository.StudentExists(studentId);

            if (!studentExists)
            {
                return(NotFound());
            }

            var notificationEntity = _mapper.Map <NotificationsSettings>(notificationsModel);

            notificationEntity.StudentId = studentId;
            await _repository.UpdateNotification(notificationEntity);

            await _repository.SaveAsync();

            await _jobsManager.RefreshJobs();

            var telegramDataExists = _repository.UserTelegramDataExists(studentId);

            if (notificationsModel.NotificationType == "Telegram" && !telegramDataExists)
            {
                return(Ok(new { message = "Для роботи нотифікацій через телеграм бот, потрібно авторизуватись через телеграм, зайти в телеграмм бот і натиснути /start" }));
            }
            return(NoContent());
            // if student telegram chat not exists, return it to client
        }
Exemplo n.º 2
0
        // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
        public void Configure(IApplicationBuilder app, IWebHostEnvironment env, JobsManager jobsManager)
        {
            if (env.IsDevelopment())
            {
                app.UseDeveloperExceptionPage();
            }
            else
            {
                app.UseHsts();
                app.UseExceptionHandler("/Error");
                // The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts.
            }

            // it needs for create bot service and setWebhook
            app.UseStaticFiles();
            app.UseSpaStaticFiles();

            app.UseRouting();
            app.UseCors(x => x
                        .AllowAnyOrigin()
                        .AllowAnyMethod()
                        .AllowAnyHeader());

            app.UseAuthentication();
            app.UseAuthorization();
            app.UseEndpoints(endpoints =>
            {
                endpoints.MapControllerRoute(
                    name: "default",
                    pattern: "{controller}/{action=Index}/{id?}");
                endpoints.MapHangfireDashboard();
            });
            app.UseSwagger()
            .UseSwaggerUI(c =>
            {
                c.SwaggerEndpoint("/swagger/v1/swagger.json", "My API V1");
            });
            app.UseHangfireDashboard();
            app.UseSpa(spa =>
            {
                spa.Options.SourcePath = "ClientApp";

                if (env.IsDevelopment())
                {
                    spa.UseReactDevelopmentServer(npmScript: "start");
                }
            });

            jobsManager.RefreshJobs().GetAwaiter().GetResult();
        }
Exemplo n.º 3
0
        public async Task Execute(Message message, TelegramBotClient client)
        {
            // todo перевірка наяності свовіщень
            Console.WriteLine("We are here !");
            var student = await _repository.GetUserByTelegramId(message.From.Id);

            var notificationEntity = new NotificationsSettings
            {
                StudentId         = student.Id,
                IsNotificationsOn = false
            };
            await _repository.UpdateNotification(notificationEntity);

            await _repository.SaveAsync();

            await _jobsManager.RefreshJobs();

            await Bot.BotClient.SendTextMessageAsync(message.Chat.Id, "Сповіщення вимкнено !");
        }
Exemplo n.º 4
0
        public async Task Execute(Message message, TelegramBotClient client)
        {
            // todo перевірка наявності сповіщень
            var student = await _repository.GetUserByTelegramId(message.From.Id);

            if (student == null)
            {
                // todo Bot : винести текст команд в статичний класс
                await Bot.BotClient.SendTextMessageAsync(message.Chat.Id, "Щоб користуватись сповіщеннями, їх потрібно увімкнути на сайті <domain> ");
            }
            var notificationEntity = new NotificationsSettings
            {
                StudentId         = student.Id,
                IsNotificationsOn = true
            };
            await _repository.UpdateNotification(notificationEntity);

            await _repository.SaveAsync();

            await _jobsManager.RefreshJobs();

            await Bot.BotClient.SendTextMessageAsync(message.Chat.Id, "Сповіщення увімкнено !");
        }