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; }
        }
Ejemplo n.º 2
0
        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; }
        }
Ejemplo n.º 7
0
        public async Task <HttpStatusCode> AddHour(HourDto data)
        {
            var result = await _hourRepository.InsertHour(_mapper.Map <Hour>(data));

            return(HttpStatusCode.OK);
        }
Ejemplo n.º 8
0
        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);
        }