private IAppointmentDetails BuildAppointmentDetails(string[] idColumnSet)
        {
            IAppointmentDetails appointmentDetails = kernel.Get <IAppointmentDetails>();
            IDate       date     = kernel.Get <IDate>();
            ICustomer   customer = kernel.Get <ICustomer>();
            IMyServices service  = kernel.Get <IMyServices>();

            if (idColumnSet.Length > 0)
            {
                customer = customerController.GetCustomer(idColumnSet[1]);
                service  = myServicesController.GetService(idColumnSet[2]);
                date     = dateController.GetDate(idColumnSet[3]);

                appointmentDetails.Forename            = customer.Forename;
                appointmentDetails.Surname             = customer.Surname;
                appointmentDetails.Telephone           = customer.Telephone;
                appointmentDetails.AppointmentDay      = date.Day;
                appointmentDetails.AppointmentTime     = date.Time;
                appointmentDetails.AppointmentDuration = date.Duration;
                appointmentDetails.AppointmentLength   = date.Length;
                appointmentDetails.AppointmentId       = idColumnSet[0];
                appointmentDetails.Name = service.Name;
            }
            return(appointmentDetails);
        }
        public void BuildAppointment(IAppointment appointment, ICustomer customer, IMyServices service)
        {
            bool   IsTimeAvailable = false;
            string timeToCalculate = null;

            double.TryParse(appointment.AppointmentDuration, out double multiplier);
            DateTime.TryParse(appointment.AppointmentTime, out DateTime appointmentTime);

            int newTimeAppointmentInMinutes = (int)(60 * (multiplier / 2));

            // minuta po minucie sprawdzaj zajętość pola
            for (int i = 0; i < newTimeAppointmentInMinutes; i++)
            {
                timeToCalculate = appointmentTime.AddMinutes(i).ToShortTimeString();
                // kolizja z następnym terminem
                if (dateController.GetDate(appointment.AppointmentDay, timeToCalculate).Date_Id == null)
                {
                    IsTimeAvailable = true;
                }
                else
                {
                    IsTimeAvailable = false;
                    break;
                }
            }

            IsTimeAvailable = CheckAvailableTimeToEndOfWorkInMinutes(appointment, IsTimeAvailable, newTimeAppointmentInMinutes);

            if (IsTimeAvailable)
            {
                try
                {
                    SaveAppointmentToDataBase(appointment, customer, service);
                }
                catch (Exception)
                {
                    MessageBox.Show("AppointmentProcessor Error");
                }
            }
            else
            {
                MessageBox.Show("Termin jest zajęty! Wybierz inny termin wizyty!");
            }
        }