public async Task <IActionResult> CreateNew([FromBody] HourDto data) { try { if (ModelState.IsValid) { using (HttpClient client = new HttpClient()) { StringContent content = new StringContent(JsonConvert.SerializeObject(data), Encoding.UTF8, "application/json"); string endpoint = _apiBaseUrl;// + $"/{Id}"; using (var Response = await client.PutAsync(endpoint, content)) { if (Response.StatusCode == System.Net.HttpStatusCode.OK) { return(RedirectToAction("Index")); } else { ModelState.Clear(); ModelState.AddModelError(string.Empty, "Looks like an error on our side. Sorry!"); return(View()); } } } } return(RedirectToAction(nameof(Index))); } catch (Exception Ex) { throw; } }
public async Task <List <DayDto> > GetReport(int scheduleId, string userId) { var schedule = await context.Schedules.Include(x => x.WorkUnits).SingleOrDefaultAsync(x => x.Id == scheduleId); var days = new List <DayDto>(); var workUnits = schedule.WorkUnits.Where(x => x.Start >= schedule.StartOfWorkingTime && x.End <= schedule.EndOfWorkingTime).ToList(); foreach (DayOfWeek day in Enum.GetValues(typeof(DayOfWeek))) { var dayDto = new DayDto { Day = day, Hours = new List <HourDto>() }; var workUnitsForOneDay = workUnits.Where(x => x.DayOfWeek == day).ToList(); for (int i = schedule.StartOfWorkingTime.Hours; i < schedule.EndOfWorkingTime.Hours; i++) { var start = new TimeSpan(i, 0, 0); var end = new TimeSpan(i + 1, 0, 0); var hourDto = new HourDto { Start = start, End = end }; var workUnitsForOneHour = workUnitsForOneDay.Where(x => ((x.Start <start && x.End> start) || x.Start >= start && x.Start < end)).ToList(); hourDto.IsFullWorkTimeUnit = workUnitsForOneHour.Any(x => x.Start <= start && x.End >= end); workUnitsForOneHour = workUnitsForOneHour.GroupBy(x => x.MemberId).Select(x => x.First()).ToList(); hourDto.QuantityOfEmployees = workUnitsForOneHour.Count; dayDto.Hours.Add(hourDto); } days.Add(dayDto); } return(days); }
public async Task <IActionResult> Edit(int Id, HourDto data) { HourDto dto = new HourDto(); using (HttpClient client = new HttpClient()) { StringContent content = new StringContent(JsonConvert.SerializeObject(data), Encoding.UTF8, "application/json"); string endpoint = _apiBaseUrl + $"/{Id}"; using (var Response = await client.PostAsync(endpoint, content)) { if (Response.StatusCode == System.Net.HttpStatusCode.OK) { //string apiResponse = await Response.Content.ReadAsStringAsync(); //dto = JsonConvert.DeserializeObject<RoleDto>(apiResponse); return(RedirectToAction("Index")); } else { ModelState.Clear(); ModelState.AddModelError(string.Empty, "Looks like an error on our side. Sorry!"); return(View()); } } } }
public async Task <IActionResult> Edit(int Id) { HourDto dto = new HourDto(); using (HttpClient client = new HttpClient()) { //StringContent content = new StringContent(JsonConvert.SerializeObject(user), Encoding.UTF8, "application/json"); string endpoint = _apiBaseUrl + $"/{Id}"; using (var Response = await client.GetAsync(endpoint /*, content*/)) { if (Response.StatusCode == System.Net.HttpStatusCode.OK) { string apiResponse = await Response.Content.ReadAsStringAsync(); dto = JsonConvert.DeserializeObject <HourDto>(apiResponse); //ViewBag.Roles = _viewbagConvert.ConvertToSelectList(await Helper.GetRolesAPICall(_config.GetValue<string>("RolesAPI")), dto.RoleId); return(View(dto)); } else { ModelState.Clear(); ModelState.AddModelError(string.Empty, "Looks like an error on our side. Sorry!"); return(View()); } } } }
public async Task <IActionResult> Index(int Id) { HourDto dto = new HourDto(); using (HttpClient client = new HttpClient()) { string endpoint = _apiBaseUrl + $"/{Id}"; using (var Response = await client.GetAsync(endpoint /*, content*/)) { if (Response.StatusCode == System.Net.HttpStatusCode.OK) { string apiResponse = await Response.Content.ReadAsStringAsync(); dto = JsonConvert.DeserializeObject <HourDto>(apiResponse); var employees = new List <SelectListItem>(); employees.Add(new SelectListItem() { Text = "Select Employee", Selected = true, Value = "-1" }); employees.AddRange(_viewbagConvert.ConvertToSelectList(await Helper.GetEmployeesAPICall(_config.GetValue <string>("EmployeesAPI")))); ViewBag.Employees = employees; return(View(dto)); } else { var employees = new List <SelectListItem>(); employees.Add(new SelectListItem() { Text = "Select Employee", Selected = true, Value = "-1" }); employees.AddRange(_viewbagConvert.ConvertToSelectList(await Helper.GetEmployeesAPICall(_config.GetValue <string>("EmployeesAPI")))); ViewBag.Employees = employees; return(View()); } } } }
public async Task <IActionResult> CreateNew() { try { HourDto dto = new HourDto(); var employees = new List <SelectListItem>(); employees.Add(new SelectListItem() { Text = "Select Employee", Selected = true, Value = "-1" }); employees.AddRange(_viewbagConvert.ConvertToSelectList(await Helper.GetEmployeesAPICall(_config.GetValue <string>("EmployeesAPI")))); ViewBag.Employees = employees; return(View(dto)); } catch (Exception Ex) { throw; } }
public async Task <HttpStatusCode> AddHour(HourDto data) { var result = await _hourRepository.InsertHour(_mapper.Map <Hour>(data)); return(HttpStatusCode.OK); }
public List <DayDto> GetWeek([FromBody] FilterWeekAppointmentDto filter) { // Tengo que devolver una lista con todos los dias entre la fecha desde y la fecha hasta // Para cada dia, tengo que partirlo en 24 horas // Para cada hora tengo que tener una lista con todas las especialidades del usuario // Para cada especialidad tengo que decir cuantos turnos reservados tiene en esa fecha y en ese rango de horas var res = new List <DayDto>(); using (var dbContext = new ApplicationDbContext()) { var userId = GetUserId(); var specialties = dbContext.Clinic_Specialties.Where(s => s.UserId == userId).ToList(); var appointments = dbContext.Clinic_Appointments .Where(a => a.Doctor.UserId == userId) .Where(a => !filter.DoctorId.HasValue || a.DoctorId == filter.DoctorId) .Where(a => !filter.SubSpecialtyId.HasValue || a.Doctor.SubspecialtyId == filter.SubSpecialtyId) .Where(a => !filter.SpecialtyId.HasValue || a.Doctor.SpecialtyId == filter.SpecialtyId) .Where(a => filter.StartDate <= a.DateTime && a.DateTime <= filter.EndDate) .ToList(); for (var date = filter.StartDate.Date; date <= filter.EndDate.Date; date = date.AddDays(1)) { var day = new DayDto { Day = date, Hours = new List <HourDto>() }; var nextDate = date.AddDays(1); for (var datetime = date.AddHours(7); datetime < nextDate; datetime = datetime.AddHours(1)) { var hour = new HourDto { Hour = datetime, AppointmentsPerSpecialty = new List <AppointmentsPerSpecialtyDto>(), TotalAppointments = 0 }; var nextHour = datetime.AddHours(1); foreach (var specialty in specialties) { var count = appointments.Count(a => datetime <= a.DateTime && a.DateTime < nextHour && a.Doctor.SpecialtyId == specialty.Id); if (count > 0) { hour.AppointmentsPerSpecialty.Add(new AppointmentsPerSpecialtyDto { SpecialtyId = specialty.Id, SpecialtyDescription = specialty.Data.Description, Appointments = count }); hour.TotalAppointments += count; } } day.Hours.Add(hour); } res.Add(day); } } return(res); }