protected override async Task <bool> SaveAsync()
        {
            var monthIndex = dateTimeService.GetGenitiveMonthIndex(SelectedMonth) + 1;

            var timeArray = Time.Split(':');
            var hours     = int.Parse(timeArray[0]);
            var minutes   = int.Parse(timeArray[1]);

            var dateTime = new DateTime(SelectedYear, monthIndex, SelectedDay, hours, minutes, 0);

            if (Enrollment is null)
            {
                Enrollment = await enrollmentService.AddEnrollmentAsync(new Enrollment()
                {
                    ClientFirstname   = ClientFirstname,
                    ClientPhoneNumber = ClientPhoneNumber,
                    DateTime          = dateTime,
                    Description       = Description,
                    CreationDateTime  = DateTime.Now
                });
            }
            else
            {
                Enrollment.ClientFirstname   = ClientFirstname;
                Enrollment.ClientPhoneNumber = ClientPhoneNumber;
                Enrollment.DateTime          = dateTime;
                Enrollment.Description       = Description;
                Enrollment.EditDateTime      = DateTime.Now;

                await enrollmentService.EditEnrollmentAsync(Enrollment);

                await serviceManager.RemoveAllEnrollmentWorkerServicesAsync(Enrollment.Id);
            }

            var enrollmentWorkerServices = new List <EnrollmentWorkerService>();

            EnrollmentServices.ForEach(EnrollmentService =>
            {
                enrollmentWorkerServices.Add(new EnrollmentWorkerService()
                {
                    EnrollmentId = Enrollment.Id,
                    ServiceId    = EnrollmentService.Id,
                    WorkerId     = EnrollmentService.WorkerId
                });
            });

            await serviceManager.AddEnrollmentWorkerServicesAsync(enrollmentWorkerServices);

            return(await base.SaveAsync());
        }
        private async Task OnRemoveEnrollmentServiceCommandExecuteAsync(ServiceDTO serviceDTO)
        {
            var service = await serviceManager.GetServiceAsync(serviceDTO.Id);

            if (service.Id <= Services.Count)
            {
                var services = Services as IList <Service>;
                services.Insert(service.Id - 1, service);
            }
            else
            {
                Services.Add(service);
            }

            EnrollmentServices.Remove(serviceDTO);
        }
        private void OnAddEnrollmentServiceCommandExecute()
        {
            var serviceDTO = new ServiceDTO()
            {
                Id              = SelectedService.Id,
                WorkerId        = SelectedWorker.Id,
                Title           = SelectedService.Title,
                WorkerShortname = SelectedWorker.Shortname
            };

            EnrollmentServices.Add(serviceDTO);

            var service = Services.FirstOrDefault(Service => Service.Id.Equals(SelectedService.Id));

            Services.Remove(service);

            SelectedWorker = null;
        }