public ScheduleItemsController(IDbRepository dbRepository, IScheduleItemsRepository scheduleItemsRepository, ISchedulesRepository schedulesRepository, IMapper mapper) { _dbRepository = dbRepository; _schedulesRepository = schedulesRepository; _scheduleItemsRepository = scheduleItemsRepository; _mapper = mapper; }
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) }); }
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" + $"Хочешь , чтобы я называла имя преподавателя, который будет вести занятие?" }); }
protected override SimpleResponse Respond(AliceRequest request, ISchedulesRepository schedulesRepo, State state) { return(new SimpleResponse() { Text = $"Не поняла" }); }
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 = "Мы закончили, если тебе что-то вдруг не понравится, ты сможешь это перенастроить" }); }
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 = "Принято, а как насчет того, чтобы я говорила о времени начала и окончания пары?" }); }
public SchedulePolicy(IScheduleSchemasRepository scheduleSchemasRepository, ISchedulesRepository schedulesRepository, IHallsRepository hallsRepository) { _scheduleSchemasRepository = scheduleSchemasRepository; _schedulesRepository = schedulesRepository; _hallsRepository = hallsRepository; }
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 = "Скажи номер новой группы" }); }
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 = "Мне нужна конкретная дата! Скажи: 'выведи расписание на сегодня' " + "или на какой-то другой день, который тебе нужен" }); }
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; }
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); }
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); }
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}" }); }
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); }
protected override SimpleResponse Respond(AliceRequest request, ISchedulesRepository schedulesRepo, State state) { state.Step = Step.AwaitForName; return(new SimpleResponse() { Text = "Привет, мне кажется, что мы раньше не встречались. " + "Я помогу тебе узнавать информацию о твоем расписании в университете, " + "но для этого мне понадобится узнать от тебя несколько вещей. " + "Для начала скажи, как мне тебя называть?" }); }