public MembershipPayment Create(
            MembershipPaymentCreate membershipPaymentCreate, int employeeId)
        {
            Database.MembershipPayment activePayment = _context.MembershipPayments
                                                       .Include(x => x.MembershipType)
                                                       .Where(x => x.ClientId == membershipPaymentCreate.ClientId)
                                                       .Where(x => x.CreatedAt.AddMonths(x.MembershipType.MonthsValid) > DateTime.Now)
                                                       .FirstOrDefault();

            if (activePayment != null)
            {
                throw new ActiveMembershipException();
            }

            Database.MembershipPayment membershipPayment = new Database.MembershipPayment
            {
                ClientId         = membershipPaymentCreate.ClientId,
                EmployeeId       = employeeId,
                MembershipTypeId = membershipPaymentCreate.MembershipTypeId,
                CreatedAt        = DateTime.Now,
            };

            _context.MembershipPayments.Add(membershipPayment);
            _context.SaveChanges();

            Database.MembershipPayment createdPayment = _context.MembershipPayments
                                                        .Include(x => x.Client)
                                                        .ThenInclude(x => x.AppUser)
                                                        .Include(x => x.MembershipType)
                                                        .FirstOrDefault(x => x.Id == membershipPayment.Id);

            return(MembershipPaymentMapper.FromDb(createdPayment));
        }
Ejemplo n.º 2
0
        public WorkoutSchedule Create(Models.Requests.Workout.WorkoutScheduleCreate createRequest)
        {
            // da li u isto vrijeme postoji vec trening
            Database.Workout workout = _context.Workouts.Find(createRequest.WorkoutId);

            if (workout == null)
            {
                throw new ResourceNotFoundException($"Workout with id {createRequest.WorkoutId} not found");
            }

            // adds 15 minutes after workout in order to prepare for new workout
            TimeSpan workoutEnd = new TimeSpan(
                createRequest.TimeOfTheDay.Hours,
                createRequest.TimeOfTheDay.Minutes + workout.Duration + 15,
                createRequest.TimeOfTheDay.Seconds);

            Database.WorkoutSchedule workoutSchedule = _context.WorkoutSchedules
                                                       .Where(x => x.DayOfTheWeek == createRequest.DayOfTheWeek)
                                                       .Where(x => new TimeSpan(x.TimeOfTheDay.Hours, x.TimeOfTheDay.Minutes + x.Workout.Duration + 15, 0) > createRequest.TimeOfTheDay
                                                              &&
                                                              x.TimeOfTheDay < workoutEnd
                                                              ).FirstOrDefault();

            if (workoutSchedule != null)
            {
                throw new WorkoutScheduleTakenException("This time slot is taken by another workout");
            }

            Database.WorkoutSchedule newWorkoutSchedule = _mapper.Map <Database.WorkoutSchedule>(createRequest);
            _context.WorkoutSchedules.Add(newWorkoutSchedule);
            _context.SaveChanges();

            return(GetById(newWorkoutSchedule.Id));
        }