protected ExpectedCourse(Guid coachId,
                                 Guid locationId,
                                 Guid serviceId,
                                 int sessionCount,
                                 string repeatFrequency,
                                 string startDate,
                                 string startTime,
                                 int duration,
                                 int studentCapacity,
                                 bool isOnlineBookable,
                                 decimal?sessionPrice,
                                 decimal?coursePrice,
                                 string colour,
                                 string sessionName)
        {
            Coach = new ApiCoachKey {
                id = coachId
            };
            Location = new ApiLocationKey {
                id = locationId
            };
            Service = new ApiServiceKey {
                id = serviceId
            };
            Timing = new ApiSessionTiming {
                startDate = startDate, startTime = startTime, duration = duration
            };
            Booking = new ApiSessionBooking {
                studentCapacity = studentCapacity, isOnlineBookable = isOnlineBookable
            };
            Repetition = new ApiRepetition {
                sessionCount = sessionCount, repeatFrequency = repeatFrequency
            };
            Pricing = new ApiPricing {
                sessionPrice = sessionPrice, coursePrice = coursePrice
            };
            Presentation = new ApiPresentation {
                colour = colour
            };

            Sessions = new List <ExpectedCourseSession>();
            for (var i = 0; i < sessionCount; i++)
            {
                var date    = FormatDate(startDate, repeatFrequency, i);
                var session = new ExpectedCourseSession(coachId,
                                                        locationId,
                                                        serviceId,
                                                        date,
                                                        startTime,
                                                        duration,
                                                        studentCapacity,
                                                        isOnlineBookable,
                                                        sessionPrice,
                                                        colour,
                                                        sessionName);
                Sessions.Add(session);
            }
        }
 protected ExpectedSingleSession(Guid coachId,
                                 Guid locationId,
                                 Guid serviceId,
                                 string date,
                                 string startTime,
                                 int duration,
                                 int studentCapacity,
                                 bool isOnlineBookable,
                                 decimal?price,
                                 string colour,
                                 string name)
 {
     Coach = new ApiCoachKey {
         id = coachId
     };
     Location = new ApiLocationKey {
         id = locationId
     };
     Service = new ApiServiceKey {
         id = serviceId
     };
     Timing = new ApiSessionTiming {
         startDate = date, startTime = startTime, duration = duration
     };
     Booking = new ApiSessionBooking {
         studentCapacity = studentCapacity, isOnlineBookable = isOnlineBookable
     };
     Repetition = new ApiRepetition {
         sessionCount = 1
     };
     Pricing = new ApiPricing {
         sessionPrice = price
     };
     Presentation = new ApiPresentation {
         colour = colour
     };
     Name = name;
 }