public ScheduleItemsController(IDbRepository dbRepository, IScheduleItemsRepository scheduleItemsRepository, ISchedulesRepository schedulesRepository, IMapper mapper)
 {
     _dbRepository            = dbRepository;
     _schedulesRepository     = schedulesRepository;
     _scheduleItemsRepository = scheduleItemsRepository;
     _mapper = mapper;
 }
Example #2
0
        protected override SimpleResponse Respond(AliceRequest request, ISchedulesRepository schedulesRepo, State state)
        {
            var positive = new List <string>
            {
                "да",
                "хочу",
                "хотел бы",
                "начать",
                "хорошо"
            };

            var isPositive = positive.Any(item =>
            {
                var tokens = item.Split(" ");
                return(tokens.All(request.Request.Nlu.Tokens.ContainsStartWith));
            });

            if (isPositive)
            {
                state.User.DisplaySubjectTime = true;
            }
            else
            {
                state.User.DisplaySubjectTime = false;
            }

            state.Step = Step.AwaitForDisplayingSubjectType;
            return(new SimpleResponse()
            {
                Text = "Хорошо, сделаю все так, как ты сказал \n " +
                       "Что насчет озвучивания типа предмета. \n" +
                       "К примеру: лекция, практическое занятие или лабораторная"
            });
        }
 protected override SimpleResponse Respond(AliceRequest request, ISchedulesRepository schedulesRepo, State state)
 {
     return(new SimpleResponse()
     {
         Text = GetHelper(state)
     });
 }
Example #4
0
        protected override SimpleResponse Respond(AliceRequest request, ISchedulesRepository schedulesRepo, State state)
        {
            var positive = new List <string>
            {
                "да",
                "хочу",
                "хотел бы",
                "начать",
                "хорошо"
            };

            var isPositive = positive.Any(item =>
            {
                var tokens = item.Split(" ");
                return(tokens.All(request.Request.Nlu.Tokens.ContainsStartWith));
            });

            if (isPositive)
            {
                state.User.DisplaySubjectType = true;
            }
            else
            {
                state.User.DisplaySubjectType = false;
            }

            state.Step = Step.AwaitForDisplayingEmployee;
            return(new SimpleResponse()
            {
                Text = $"Ну и последнее, {state.User.Name}, \n" +
                       $"Хочешь , чтобы я называла имя преподавателя, который будет вести занятие?"
            });
        }
Example #5
0
 protected override SimpleResponse Respond(AliceRequest request, ISchedulesRepository schedulesRepo, State state)
 {
     return(new SimpleResponse()
     {
         Text = $"Не поняла"
     });
 }
Example #6
0
        private string GetResponse(ISchedulesRepository schedulesRepo, State state)
        {
            state.Step = Step.None;
            string errorMessage;

            Date = DateTime.UtcNow.AddHours(timeZone);

            var schedule = schedulesRepo.GetSchedule(int.Parse(state.User.Group)).Result;

            if (schedule == null)
            {
                if (!TrySendScheduleResponse(schedulesRepo, state, out schedule, out errorMessage))
                {
                    return(errorMessage);
                }
            }

            var responseText = GetTodayScheduleLeft(SchedulesRepository.CurrentWeek, schedule.schedules, state.User.DisplayAuditory,
                                                    state.User.DisplayEmployeeName, state.User.DisplaySubjectTime, state.User.DisplaySubjectType);

            responseText = String.IsNullOrWhiteSpace(responseText)
                ? "На сегодня больше нет пар!"
                : responseText;

            return(responseText);
        }
        private string GetExamSchedule(ISchedulesRepository schedulesRepo, State state)
        {
            state.Step = Step.None;
            string errorMessage;

            var schedule = schedulesRepo.GetSchedule(int.Parse(state.User.Group)).Result;

            if (schedule == null)
            {
                if (!TrySendScheduleResponse(schedulesRepo, state, out schedule, out errorMessage))
                {
                    return(errorMessage);
                }
            }

            var responseText = "";

            var number = 1;

            foreach (var exams in schedule.examSchedules)
            {
                // number - какое по счету мы оглашаем расписание в нашем ответе
                responseText += FormExamSchedule(exams, state.User, number);
                number++;
            }

            return(!String.IsNullOrWhiteSpace(responseText) ? responseText : "Расписание экзаменов не найдено :(");
        }
        private string GetResponse(ISchedulesRepository schedulesRepo, State state)
        {
            state.Step = Step.None;
            string errorMessage;

            var schedule = schedulesRepo.GetSchedule(int.Parse(state.User.Group)).Result;

            if (schedule == null)
            {
                if (!TrySendScheduleResponse(schedulesRepo, state, out schedule, out errorMessage))
                {
                    return(errorMessage);
                }
            }

            string result;

            if (!DateBoundariesCheck(state, schedule, out result, out errorMessage))
            {
                return(errorMessage);
            }
            else if (!String.IsNullOrWhiteSpace(result))
            {
                return(result);
            }

            return(GetSchedule(schedule, state));
        }
        protected override SimpleResponse Respond(AliceRequest request, ISchedulesRepository schedulesRepo, State state)
        {
            var result      = 0;
            var commandText = request.Request.Command.Replace(" ", "");

            if (commandText.Length == 6 && int.TryParse(commandText, out result))
            {
                state.User.Group = result.ToString();
                state.Step       = Step.AwaitForCustomizationAnswer;

                return(new SimpleResponse()
                {
                    Text = $"Хорошо {state.User.Name}, мы готовы к работе! \n" +
                           $"Но, перед тем, как начать, я хотела бы спросить тебя о том, " +
                           $"не хотел бы настроить то, какую конкретно информацию я буду тебе озвучивать? " +
                           $"Ты можешь пропустить это шаг и тогда я буду действовать по умолчанию, " +
                           $"но, не бойся, ты всегда сможешь поменять эти настройки"
                });
            }
            else
            {
                state.Step = Step.AwaitForGroup;

                return(new SimpleResponse()
                {
                    Text = $"Хм, {state.User.Name}, мне кажется, что ты ввел неправильную группу." +
                           $"Группа должна состоять из 6 цифр, к примеру '851005'\n" +
                           $"Попробуй еще раз"
                });
            }
        }
        protected override SimpleResponse Respond(AliceRequest request, ISchedulesRepository schedulesRepo, State state)
        {
            var positive = new List <string>
            {
                "да",
                "хочу",
                "хотел бы",
                "начать",
                "хорошо"
            };

            var isPositive = positive.Any(item =>
            {
                var tokens = item.Split(" ");
                return(tokens.All(request.Request.Nlu.Tokens.ContainsStartWith));
            });

            if (isPositive)
            {
                state.User.DisplayEmployeeName = true;
            }
            else
            {
                state.User.DisplayEmployeeName = false;
            }

            state.Step = Step.None;
            return(new SimpleResponse()
            {
                Text = "Мы закончили, если тебе что-то вдруг не понравится, ты сможешь это перенастроить"
            });
        }
Example #11
0
        protected override SimpleResponse Respond(AliceRequest request, ISchedulesRepository schedulesRepo, State state)
        {
            int result;
            var commandText = request.Request.Command.Replace(" ", "");

            if (commandText.Length == 6 && int.TryParse(commandText, out result))
            {
                state.Step       = Step.None;
                state.User.Group = result.ToString();

                return(new SimpleResponse()
                {
                    Text = $"Принято, теперь твоя группа - {state.User.Group}"
                });
            }
            else
            {
                state.Step = Step.AwaitForNewGroup;

                return(new SimpleResponse()
                {
                    Text = $"Хм, {state.User.Name}, мне кажется, что ты ввел неправильную группу." +
                           $"Группа должна состоять из 6 цифр, к примеру '851005'\n" +
                           $"Попробуй еще раз!"
                });
            }
        }
        // Отправляет запрос на сервер с просьбой предоставить расписание
        protected bool TrySendScheduleResponse(ISchedulesRepository schedulesRepo, State state, out BsuirScheduleResponse result, out string errorMessage)
        {
            using var client = new HttpClient();
            var schedule      = new BsuirScheduleResponse();
            var bsuirResponse = client.GetAsync($"https://journal.bsuir.by/api/v1/studentGroup/schedule?studentGroup={state.User.Group}").Result;

            if (bsuirResponse.IsSuccessStatusCode)
            {
                var stringResponse = bsuirResponse.Content.ReadAsStringAsync().Result;
                if (String.IsNullOrWhiteSpace(stringResponse))
                {
                    result       = null;
                    errorMessage = "Похоже, что расписания вашей группы нет на сервере, сочувствую :(";
                    return(false);
                }
                schedule       = JsonConvert.DeserializeObject <BsuirScheduleResponse>(stringResponse);
                schedule.Group = int.Parse(schedule.studentGroup.name);

                schedulesRepo.AddSchedule(schedule);
            }
            else
            {
                result       = null;
                errorMessage = $"Простите, сервер не отвечает, а сохраненного расписания этой группы у меня нет :(((";
                return(false);
            }

            result       = schedule;
            errorMessage = "";
            return(true);
        }
        protected override SimpleResponse Respond(AliceRequest request, ISchedulesRepository schedulesRepo, State state)
        {
            var positive = new List <string>
            {
                "да",
                "хочу",
                "хотел бы",
                "начать",
                "хорошо"
            };

            var isPositive = positive.Any(item =>
            {
                var tokens = item.Split(" ");
                return(tokens.All(request.Request.Nlu.Tokens.ContainsStartWith));
            });

            if (isPositive)
            {
                state.User.DisplayAuditory = true;
            }
            else
            {
                state.User.DisplayAuditory = false;
            }

            state.Step = Step.AwaitForDisplayingSubjectTime;
            return(new SimpleResponse()
            {
                Text = "Принято, а как насчет того, чтобы я говорила о времени начала и окончания пары?"
            });
        }
Example #14
0
 public SchedulePolicy(IScheduleSchemasRepository scheduleSchemasRepository,
                       ISchedulesRepository schedulesRepository, IHallsRepository hallsRepository)
 {
     _scheduleSchemasRepository = scheduleSchemasRepository;
     _schedulesRepository       = schedulesRepository;
     _hallsRepository           = hallsRepository;
 }
Example #15
0
 public HomeController(ISchedulesRepository ISchedulesRepository,
                       IUserInformationsRepository IUserInformationsRepository,
                       IAddressesRepository IAddressesRepository) : base()
 {
     _IUserInformationRepository = IUserInformationsRepository;
     _IAddressesRepository       = IAddressesRepository;
     _ISchedulesRepository       = ISchedulesRepository;
 }
 protected override SimpleResponse Respond(AliceRequest request, ISchedulesRepository schedulesRepo, State state)
 {
     state.Step = Step.AwaitForNewGroup;
     return(new SimpleResponse()
     {
         Text = "Скажи номер новой группы"
     });
 }
Example #17
0
 public GenerateScheduleHandler(IMoviesApiClient client, ISchedulePolicy policy, ISchedulesRepository repository,
                                IEventProcessor processor)
 {
     _client     = client;
     _policy     = policy;
     _repository = repository;
     _processor  = processor;
 }
 protected override SimpleResponse Respond(AliceRequest request, ISchedulesRepository schedulesRepo, State state)
 {
     state.Step = Step.AwaitForNewName;
     return(new SimpleResponse()
     {
         Text = "Скажи, как ты хочешь, чтобы я называла тебя теперь?"
     });
 }
 protected override SimpleResponse Respond(AliceRequest request, ISchedulesRepository schedulesRepo, State state)
 {
     state.Step = Step.None;
     return(new SimpleResponse()
     {
         Text = "Приветствую, чего желаете?"
     });
 }
 protected override SimpleResponse Respond(AliceRequest request, ISchedulesRepository schedulesRepo, State state)
 {
     state.Step = Step.None;
     return(new SimpleResponse()
     {
         Text = "Мне нужна конкретная дата! Скажи: 'выведи расписание на сегодня' " +
                "или на какой-то другой день, который тебе нужен"
     });
 }
Example #21
0
 public VisitController(IUsersRepository usersRepository, IServicesRepository servicesRepository, IDoctorsRepository doctorsRepository, ISchedulesRepository schedulesRepository, IVisitsRepository visitsRepository, ScheduleService scheduleService)
 {
     this.usersRepository     = usersRepository;
     this.servicesRepository  = servicesRepository;
     this.doctorsRepository   = doctorsRepository;
     this.schedulesRepository = schedulesRepository;
     this.visitsRepository    = visitsRepository;
     this.scheduleService     = scheduleService;
 }
Example #22
0
        protected override SimpleResponse Respond(AliceRequest request, ISchedulesRepository schedulesRepo, State state)
        {
            var responseText = GetResponse(schedulesRepo, state);

            return(new SimpleResponse()
            {
                Text = $"{responseText}"
            });
        }
        protected override SimpleResponse Respond(AliceRequest request, ISchedulesRepository schedulesRepo, State state)
        {
            state.Step = Step.None;
            var name    = GetTeachersName(request.Request.Nlu.Tokens);
            var teacher = GetTeacherByName(schedulesRepo, name);

            if (teacher != null)
            {
                var schedule = schedulesRepo.GetTeacherSchedule(teacher.id).Result;
                if (schedule == null)
                {
                    using var client = new HttpClient();
                    var bsuirResponse = client
                                        .GetAsync($"https://journal.bsuir.by/api/v1/portal/employeeSchedule?employeeId={teacher.id}")
                                        .Result;

                    if (bsuirResponse.IsSuccessStatusCode)
                    {
                        var stringResponse = bsuirResponse.Content.ReadAsStringAsync().Result;
                        schedule            = JsonConvert.DeserializeObject <TeacherScheduleResponse>(stringResponse);
                        schedule.EmployeeId = schedule.employee.id;
                        schedulesRepo.AddTeacherSchedule(schedule);
                    }
                    else
                    {
                        return(new SimpleResponse()
                        {
                            Text = $"Простите, сервер не отвечает, а сохраненного расписания этого преподавателя у меня нет :((("
                        });
                    }
                }

                var mondayThisWeek = DateTime.Today.AddDays(-((int)DateTime.Today.DayOfWeek == 0 ? 6 : (int)DateTime.Today.DayOfWeek - 1));
                var weeksAdd       = (Date - mondayThisWeek).Days / 7;
                var week           = (weeksAdd + SchedulesRepository.CurrentWeek - 1) % 4 + 1;

                var responseText = FormResponse(week, schedule.schedules, state.User.DisplayAuditory, false,
                                                state.User.DisplaySubjectTime, state.User.DisplaySubjectType);

                responseText = String.IsNullOrWhiteSpace(responseText)
                    ? "В этот день у преподавателя нет ни одной пары"
                    : responseText + $"{teacher.lastName}  {teacher.firstName} {teacher.middleName} \n";

                return(new SimpleResponse()
                {
                    Text = $"{responseText}"
                });
            }

            var response = new SimpleResponse()
            {
                Text = $"Я не знаю такого преподавателя :( "
            };

            return(response);
        }
        protected override SimpleResponse Respond(AliceRequest request, ISchedulesRepository schedulesRepo, State state)
        {
            var responseText = GetResponse(schedulesRepo, state);
            var response     = new SimpleResponse()
            {
                Text = $"{responseText}\n{Date.ToString("d", CultureInfo.GetCultureInfo("ru-RU"))}"
            };

            return(response);
        }
Example #25
0
 public bool Run(AliceRequest request, State state, ISchedulesRepository schedulesRepo, out AliceResponse response)
 {
     if (!Check(request, state))
     {
         response = null;
         return(false);
     }
     response = CreateResponse(request, schedulesRepo, state);
     return(true);
 }
Example #26
0
        public UserSession(string userID, IUsersRepository usersRepo, ISchedulesRepository schedulesRepo, State state)
        {
            usersRepository     = usersRepo;
            schedulesRepository = schedulesRepo;

            Console.WriteLine($"Имя " + state.User.Name);
            _state.User = usersRepository.CreateUser(userID);

            Console.WriteLine($"Получена сессия пользователя {_state.User.ID}");
        }
        protected override SimpleResponse Respond(AliceRequest request, ISchedulesRepository schedulesRepo, State state)
        {
            state.Step      = Step.None;
            state.User.Name = request.Request.Command;

            return(new SimpleResponse()
            {
                Text = $"Принято, {state.User.Name}"
            });
        }
Example #28
0
 public AppointmentsController(IUserInformationsRepository IUserInformationRepository,
                               IMedicalExperienceRepository IMedicalExperienceRepository,
                               ISchedulesRepository ISchedulesRepository,
                               IAppointmentsRepository IAppointmentsRepository) : base()
 {
     _IUserInformationRepository   = IUserInformationRepository;
     _IMedicalExperienceRepository = IMedicalExperienceRepository;
     _ISchedulesRepository         = ISchedulesRepository;
     _IAppointmentsRepository      = IAppointmentsRepository;
 }
 private Teacher GetTeacherByName(ISchedulesRepository schedulesRepo, List <string> name)
 {
     if (name.Count() > 0)
     {
         return(schedulesRepo.Teachers.FirstOrDefault(teacher =>
                                                      (name.Count() == 3 && teacher.lastName.StartsWith(name[0]) && teacher.firstName.StartsWith(name[1]) && teacher.middleName.StartsWith(name[2])) ||
                                                      (name.Count() == 2 && teacher.lastName.StartsWith(name[0]) && teacher.firstName.StartsWith(name[1])) ||
                                                      (name.Count() == 1 && teacher.lastName.StartsWith(name[0]))));
     }
     return(null);
 }
Example #30
0
 protected override SimpleResponse Respond(AliceRequest request, ISchedulesRepository schedulesRepo, State state)
 {
     state.Step = Step.AwaitForName;
     return(new SimpleResponse()
     {
         Text = "Привет, мне кажется, что мы раньше не встречались. " +
                "Я помогу тебе узнавать информацию о твоем расписании в университете, " +
                "но для этого мне понадобится узнать от тебя несколько вещей. " +
                "Для начала скажи, как мне тебя называть?"
     });
 }