コード例 #1
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);
        }
コード例 #2
0
ファイル: DayService.cs プロジェクト: hemane/Backend
        private async Task <bool> ValidateDateTime(DayDto dto)
        {
            var day = await this._context.Days.FirstOrDefaultAsync(d =>
                                                                   d.DateTimeOffset == dto.DateTimeOffset && d.League.Id == dto.LeagueId);

            return(day == null);
        }
コード例 #3
0
        public IActionResult CreateDay(int weekId, DayForCreationDto day)
        {
            var week = WeeksDataStore.Current.Weeks
                       .FirstOrDefault(w => w.Id == weekId);

            if (week == null)
            {
                return(NotFound());
            }

            var maxDayId = WeeksDataStore.Current.Weeks
                           .SelectMany(w => w.Days).Max(d => d.Id);
            // find highest id

            var finalDay = new DayDto()
            {
                Id      = ++maxDayId,
                Date    = day.Date,
                WeekDay = day.WeekDay
            };

            // add 1 to create id

            week.Days.Add(finalDay);

            return(CreatedAtRoute(
                       "GetDay",
                       new { weekId, id = finalDay.Id },
                       finalDay));
        }
コード例 #4
0
        public async Task <ActionResult <ResultDto> > UpdateDay(string id, [FromBody] DayDto dayDto)
        {
            if (id != dayDto.UUID)
            {
                return(BadRequest());
            }

            return(Ok(await _dayService.UpdateDay(dayDto, HttpContext.User.Identity.Name)));
        }
コード例 #5
0
        public ServiceResult GetDay(string date)
        {
            var dateTime = DateTime.Parse(date);
            var day      = organizerDbContext.Days.Include(x => x.ToDoEntries).Include(x => x.Notes).Include(x => x.ScheduleEntries).Where(x => x.date == dateTime).FirstOrDefault();

            if (day == null)
            {
                return(new ServiceResult(false));
            }
            else
            {
                var noteDtos     = new List <INoteDto>();
                var toDoDtos     = new List <IToDoDto>();
                var shceduleDtos = new List <IScheduleEntryDto>();
                //could make a factory to create dto objects
                foreach (var a in day.Notes)
                {
                    noteDtos.Add(new NoteDto()
                    {
                        date = a.Day.date.ToString(),
                        text = a.Text
                    });
                }
                foreach (var a in day.ToDoEntries)
                {
                    toDoDtos.Add(new ToDoDto()
                    {
                        Id     = a.Id,
                        Date   = a.Day.date.ToString(),
                        Text   = a.Text,
                        IsDone = a.IsDone,
                    });
                }
                foreach (var a in day.ScheduleEntries)
                {
                    shceduleDtos.Add(new ScheduleEntryDto()
                    {
                        Id        = a.Id,
                        Date      = a.Day.date.ToString(),
                        Text      = a.Text,
                        StartTime = a.StartTime.ToShortTimeString(),
                        EndTime   = a.EndTime.ToShortTimeString()
                    });
                }
                var dayDto = new DayDto()
                {
                    id           = day.Id,
                    date         = day.date.ToString(),
                    NoteDtos     = noteDtos,
                    ToDoDtos     = toDoDtos,
                    ScheduleDtos = shceduleDtos
                };

                return(new ServiceResult(dayDto, true));
            }
        }
コード例 #6
0
        private DayDto CreateDayDto(int officeid, int year, int month, int day)
        {
            DayDto dd = new DayDto();

            dd.OfficeID        = officeid;
            dd.Date            = new DateTime(year, month, day);
            dd.MaxCapacity     = GetMaxCapacity(officeid);
            dd.CurrentCapacity = GetCurrentCapacity(officeid, dd.Date);
            return(dd);
        }
コード例 #7
0
        public IActionResult CreateDay(int Id)
        {
            var model = new DayDto();

            model.UserId    = Id;
            model.Date      = DateTime.Now;
            model.Exercises = _workoutRepository.GetExercises();

            return(View(model));
        }
コード例 #8
0
ファイル: DayService.cs プロジェクト: hemane/Backend
        public async Task EditAsync(DayDto dto)
        {
            if (!await this.ValidateDateTime(dto))
            {
                return;
            }
            var model = await this.FindSingleDayAsync(dto.Id);

            dto.MapTo(model, this._context);
            await this._context.SaveChangesAsync();
        }
コード例 #9
0
ファイル: DaysController.cs プロジェクト: hemane/Backend
        public async Task <IActionResult> Edit([FromBody] DayDto dto)
        {
            if (!this._userService.IsAdmin())
            {
                return(Forbid());
            }

            await this._dayService.EditAsync(dto);

            return(Ok());
        }
コード例 #10
0
        public IHttpActionResult GetScheduleForInstructor()
        {
            var userId = User.Identity.GetUserId();

            var instructor = _context.Instructors.SingleOrDefault(s => s.AccountId == userId);

            if (instructor != null)
            {
                var currentSemesterId = _context.AcademicSemesters.Single(s => s.CurrentSemester).Id;

                var scheduleEntries = _context
                                      .ScheduleEntries
                                      .Include(x => x.Day)
                                      .Include(x => x.Course)
                                      .Include(x => x.Room.Building)
                                      .Include(x => x.LabGroup)
                                      .Include(x => x.Day.Schedule)
                                      .Where(s => s.InstructorId == instructor.Id && s.Day.Schedule.AcademicSemesterId == currentSemesterId)
                                      .ToList();

                var schedule = new ScheduleDto {
                    Days = new List <DayDto>()
                };


                for (int i = 0; i < GlobalConfig.NUM_OF_DAYS; i++)
                {
                    var day = new DayDto
                    {
                        DayNumber = (byte)i,
                        Periods   = new List <ScheduleEntryDto>()
                    };

                    for (int j = 0; j < GlobalConfig.NUM_OF_PERIODS; j++)
                    {
                        if (scheduleEntries.Any(s => s.Period == j && s.Day.DayNumber == i))
                        {
                            var scheduleEntry    = scheduleEntries.Single(s => s.Period == j && s.Day.DayNumber == i);
                            var scheduleEntryDto = Mapper.Map <ScheduleEntry, ScheduleEntryDto>(scheduleEntry);
                            day.Periods.Add(scheduleEntryDto);
                        }
                        else
                        {
                            day.Periods.Add(new ScheduleEntryDto());
                        }
                    }
                    schedule.Days.Add(day);
                }

                return(Ok(schedule));
            }
            return(NotFound());
        }
コード例 #11
0
ファイル: Utilities.cs プロジェクト: ptrinidad314/gymgenius
        public DayDto MapDayToDayDto(Day day)
        {
            var dayDto = new DayDto();

            dayDto.Id        = day.Id;
            dayDto.Name      = day.Name;
            dayDto.Date      = day.Date;
            dayDto.Notes     = day.Notes;
            dayDto.Workloads = day.Workloads;
            dayDto.UserId    = day.UserId;

            return(dayDto);
        }
コード例 #12
0
        public IActionResult CreateMyDay(int Id)
        {
            if (!_utilities.IsCurrentUsersAccount(Id))
            {
                return(RedirectToAction("Index", "Home"));
            }

            var model = new DayDto();

            model.UserId    = Id;
            model.Date      = DateTime.Now;
            model.Exercises = _workoutRepository.GetExercises();

            return(View(model));
        }
コード例 #13
0
ファイル: Utilities.cs プロジェクト: ptrinidad314/gymgenius
        public Day MapDayDtoToDay(DayDto dayDto)
        {
            var day = _workoutRepository.GetDay(dayDto.Id);

            day.Name  = dayDto.Name;
            day.Date  = dayDto.Date;
            day.Notes = dayDto.Notes;
            if (dayDto.Workloads != null)
            {
                day.Workloads = dayDto.Workloads;
            }
            day.UserId = dayDto.UserId;

            return(day);
        }
コード例 #14
0
ファイル: DaysController.cs プロジェクト: hemane/Backend
        public async Task <IActionResult> Create([FromBody] DayDto dto)
        {
            if (!this._userService.IsAdmin())
            {
                return(Forbid());
            }

            var id = await this._dayService.CreateAsync(dto);

            if (id < 1)
            {
                return(BadRequest());
            }

            return(Ok(id));
        }
コード例 #15
0
ファイル: DayService.cs プロジェクト: maxaboxi/makro
        public async Task <ResultDto> ShareDay(DayDto dayDto, string userId)
        {
            var sharedDay = _mapper.Map <SharedDay>(dayDto);

            sharedDay.User = await _context.Users.Where(u => u.UUID == userId).FirstOrDefaultAsync();

            sharedDay.Meals     = _mealService.AddMeals(dayDto.AllMeals, userId);
            sharedDay.UUID      = Guid.NewGuid().ToString();
            sharedDay.CreatedAt = DateTime.Now;
            sharedDay.UpdatedAt = DateTime.Now;

            _context.Add(sharedDay);
            await _context.SaveChangesAsync();

            return(new ResultDto(true, sharedDay.UUID));
        }
コード例 #16
0
ファイル: DayService.cs プロジェクト: hemane/Backend
        public async Task <int> CreateAsync(DayDto dto)
        {
            if (!await this.ValidateDateTime(dto))
            {
                return(-1);
            }

            var model = dto.AsModel(this._context);

            model.Id             = 0;
            model.DateTimeOffset = model.DateTimeOffset.AddHours(2);
            await this._context.Days.AddAsync(model);

            await this._context.SaveChangesAsync();

            return(model.Id);
        }
コード例 #17
0
        public IActionResult CreateDay(DayDto dayDto)
        {
            if (!ModelState.IsValid)
            {
                return(RedirectToAction("CreateDay", "bdbusr", new { id = dayDto.UserId }));
            }

            var day = _utilities.CreateDayEntity(dayDto.Name, dayDto.Date, dayDto.UserId);

            if (!_workoutRepository.Save() || day == null)
            {
                return(RedirectToAction("CreateDay", "bdbusr", new { id = dayDto.UserId }));
            }

            foreach (var e in dayDto.ExerciseNames)
            {
                if (e != "")
                {
                    var exercise = _workoutRepository.GetExerciseByName(e);
                    if (exercise == null)
                    {
                        exercise = _utilities.CreateExerciseEntity(e);
                        if (!_workoutRepository.Save())
                        {
                            return(RedirectToAction("CreateDay", "bdbusr", new { id = dayDto.UserId }));
                        }
                    }

                    var dayExercise = _utilities.CreateDayExerciseEntity(day.Id, exercise.Id);
                    if (!_workoutRepository.Save() || dayExercise == null)
                    {
                        return(RedirectToAction("CreateDay", "bdbusr", new { id = dayDto.UserId }));
                    }

                    var workload = _utilities.CreateWorkloadEntity(day.Id, exercise.Id);
                }
            }

            _workoutRepository.AddDayForUser(dayDto.UserId, day);
            if (!_workoutRepository.Save())
            {
                return(RedirectToAction("CreateDay", "bdbusr", new { id = dayDto.UserId }));
            }

            return(RedirectToAction("ViewDay", "bdbusr", new { id = day.Id }));
        }
コード例 #18
0
        public IActionResult EditDay(DayDto dayDto)
        {
            if (!ModelState.IsValid)
            {
                return(RedirectToAction("EditDay", "bdbusr", new { id = dayDto.Id }));
            }

            var day = _utilities.MapDayDtoToDay(dayDto);

            _workoutRepository.ModifyDay(day);

            if (!_workoutRepository.Save())
            {
                return(RedirectToAction("EditDay", "bdbusr", new { id = dayDto.Id }));
            }

            return(RedirectToAction("ViewDay", "bdbusr", new { id = dayDto.Id }));
        }
コード例 #19
0
ファイル: DayService.cs プロジェクト: maxaboxi/makro
        public async Task <ResultDto> AddNewDay(DayDto dayDto, string userId)
        {
            var day = _mapper.Map <Day>(dayDto);

            day.User = await _context.Users.Where(u => u.UUID == userId).FirstOrDefaultAsync();

            day.Meals       = _mealService.AddMeals(dayDto.AllMeals, userId);
            day.UUID        = Guid.NewGuid().ToString();
            day.CreatedAt   = DateTime.Now;
            day.UpdatedAt   = DateTime.Now;
            day.HasVersions = false;
            day.IsLatest    = true;

            _context.Add(day);
            await _context.SaveChangesAsync();

            return(new ResultDto(true, "Day added succesfully"));
        }
コード例 #20
0
ファイル: DayService.cs プロジェクト: maxaboxi/makro
        public async Task <ResultDto> UpdateDay(DayDto dayDto, string userId)
        {
            Day currentDay = await _context.Days.Where(d => d.UUID == dayDto.UUID && d.User.UUID == userId)
                             .Include(d => d.User)
                             .Include(d => d.Meals)
                             .FirstOrDefaultAsync();

            if (currentDay == null)
            {
                _logger.LogDebug("Day not found with UUID: ", dayDto.UUID);
                return(new ResultDto(false, "Day not found"));
            }

            Day newDay = _mapper.Map <Day>(dayDto);

            newDay.Name        = currentDay.Name;
            newDay.User        = currentDay.User;
            newDay.CreatedAt   = currentDay.CreatedAt;
            newDay.Meals       = _mealService.AddMeals(dayDto.AllMeals, userId);
            newDay.UUID        = Guid.NewGuid().ToString();
            newDay.Date        = currentDay.Date != null ? currentDay.Date : currentDay.CreatedAt;
            newDay.UpdatedAt   = DateTime.Now;
            newDay.IsLatest    = true;
            newDay.HasVersions = true;

            currentDay.Name            = currentDay.Name;
            currentDay.IsLatest        = false;
            currentDay.VersionCreated  = DateTime.Now;
            currentDay.UpdatedAt       = DateTime.Now;
            currentDay.Date            = dayDto.Date == null && currentDay.Date == null ? currentDay.CreatedAt : dayDto.Date;
            currentDay.LatestVersionId = newDay.UUID;
            currentDay.HasVersions     = true;

            _context.Add(newDay);
            _context.Entry(currentDay).State = EntityState.Modified;

            var days = await _context.Days.Where(d => d.LatestVersionId == currentDay.UUID).ToListAsync();

            days.ForEach(d => d.LatestVersionId = newDay.UUID);

            await _context.SaveChangesAsync();

            return(new ResultDto(true, newDay.UUID));
        }
コード例 #21
0
        private static void FillScheduleRecords()
        {
            var    currentDay    = string.Empty;
            var    currentTime   = string.Empty;
            DayDto currentDayDto = null;

            for (int i = 9; i < _rows.Length; i++)
            {
                var nextDay = _rows[i][0].Value.ToString();


                var nextTime = _rows[i][1].Value.ToString();

                if (!string.IsNullOrEmpty(nextDay))
                {
                    currentDay    = nextDay;
                    currentDayDto = new DayDto {
                        DayNumber = DayDto.GetNumberByName(currentDay), DayName = currentDay
                    };
                }
                else if (LessonTimeDto.GetNumberFromPeriod(nextTime) == 1)
                {
                    var curDayIndex = DayDto.GetNumberByName(currentDay);
                    currentDay    = DayDto.DayNameByNumber[curDayIndex + 1];
                    currentDayDto = new DayDto {
                        DayNumber = curDayIndex + 1, DayName = currentDay
                    };
                }

                if (!string.IsNullOrEmpty(nextTime))
                {
                    currentTime = nextTime;
                }

                if (currentDay != "" && currentTime != "")
                {
                    AppendNewScheduleRecord(currentDayDto, currentTime, _rows[i]);
                }
            }
        }
コード例 #22
0
 public async Task <ActionResult <ResultDto> > ShareDay([FromBody] DayDto dayDto)
 {
     return(Ok(await _dayService.ShareDay(dayDto, HttpContext.User.Identity.Name)));
 }
コード例 #23
0
        private static void AppendNewScheduleRecord(DayDto dayDto, string time, Row row)
        {
            try
            {
                string       subject   = row[2].Value.ToString();
                TeacherDto   teacher   = GetTeacherData(row[3].Value.ToString());
                ClassRoomDto classRoom = new ClassRoomDto {
                    Number = row[6].Value.ToString().Replace(" ", String.Empty)
                };

                var weeksString = row[5].Value.ToString();

                if (string.IsNullOrEmpty(teacher.LastName))
                {
                    teacher.LastName = "Вакансія"; // in case of null
                }


                var groupStr = row[4].Value.ToString(); //either number or 'lecture'

                if (string.IsNullOrEmpty(subject) || subject.Length <= 2)
                {
                    return;
                }

                if (string.IsNullOrEmpty(classRoom.Number) ||
                    string.IsNullOrEmpty(weeksString) || string.IsNullOrEmpty(groupStr))
                {
                    throw new InvalidInputException("Некоректні дані: " + dayDto.DayName + ", " + time + " у файлі " + _currentFilePath);
                }

                LessonTimeDto lessonTime = new LessonTimeDto {
                    Number = LessonTimeDto.GetNumberFromPeriod(time)
                };
                string group = string.Empty;

                if (groupStr.Any(char.IsDigit))
                {
                    group = groupStr.Replace(" ", "");
                }
                else
                {
                    group = string.Empty;
                }

                LessonTypeDto lessonType = new LessonTypeDto();
                lessonType.Id = LessonTypeDto.GetIdByType(group == string.Empty ? LessonType.Лекція : LessonType.Практика);

                ScheduleRecordDto scheduleRecord = new ScheduleRecordDto
                {
                    YearOfStudying = _yearOfStudying,
                    LessonTime     = lessonTime,
                    Subject        = subject,
                    LessonType     = lessonType,
                    Group          = group,
                    Day            = dayDto,
                    Specialty      = _specialty,
                    ClassRoom      = classRoom,
                    Teacher        = teacher,
                    Weeks          = weeksString
                };

                var weeksStr  = row[5].Value.ToString().Replace(".", ","); //replace 6.9 to 6,9
                var weeksList = Utils.Utils.ParseWeeks(weeksStr);

                _weekScheduleRecords.Add(scheduleRecord, new List <int>());
                foreach (var weekNumber in weeksList)
                {
                    _weekScheduleRecords[scheduleRecord].Add(weekNumber);
                }
            }
            catch (InvalidInputException e)
            {
                Logger.LogException(e);
                throw e;
            }
            catch (Exception e)
            {
                Logger.LogException(e);
            }
        }
コード例 #24
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);
        }
コード例 #25
0
        public ServiceResult GetDays()
        {
            var days = organizerDbContext.Days.Include(x => x.ToDoEntries).Include(x => x.Notes).Include(x => x.ScheduleEntries);

            if (days == null)
            {
                return(new ServiceResult(false));
            }
            else
            {
                var daysList = new List <IDayDto>();

                foreach (var d in days)
                {
                    if (isDayEmpty(d))
                    {
                        continue;
                    }

                    var noteDtos     = new List <INoteDto>();
                    var toDoDtos     = new List <IToDoDto>();
                    var scheduleDtos = new List <IScheduleEntryDto>();
                    foreach (var a in d.Notes)
                    {
                        noteDtos.Add(new NoteDto()
                        {
                            id   = a.Id,
                            date = a.Day.date.ToString(),
                            text = a.Text
                        });
                    }
                    foreach (var a in d.ToDoEntries)
                    {
                        toDoDtos.Add(new ToDoDto()
                        {
                            Id     = a.Id,
                            Date   = a.Day.date.ToString(),
                            Text   = a.Text,
                            IsDone = a.IsDone,
                        });
                    }
                    foreach (var a in d.ScheduleEntries)
                    {
                        scheduleDtos.Add(new ScheduleEntryDto()
                        {
                            Date      = a.Day.date.ToString(),
                            Text      = a.Text,
                            StartTime = a.StartTime.ToShortTimeString(),
                            EndTime   = a.EndTime.ToShortTimeString()
                        });
                    }
                    var day = new DayDto()
                    {
                        id           = d.Id,
                        date         = d.date.ToString("yyyy-MM-dd"),
                        ToDoDtos     = toDoDtos,
                        NoteDtos     = noteDtos,
                        ScheduleDtos = scheduleDtos
                    };
                    daysList.Add(day);
                }
                if (daysList.Count == 0)
                {
                    organizerDbContext.SaveChanges();
                    return(new ServiceResult(false));
                }
                organizerDbContext.SaveChanges();
                return(new ServiceResult(daysList, true));
            }
        }