Exemple #1
0
        private async Task CreateOrUpdateProviderQualificationAsync(ProviderVenueQualificationDto providerVenueQualification,
                                                                    int providerVenueId, string postcode, int qualificationId)
        {
            var providerQualificationViewModel =
                await _providerQualificationService.GetProviderQualificationAsync(providerVenueId, qualificationId);

            if (providerQualificationViewModel == null && providerVenueQualification.QualificationIsOffered)
            {
                var addQualificationViewModel = new AddQualificationViewModel
                {
                    LarId           = providerVenueQualification.LarId,
                    QualificationId = qualificationId,
                    Source          = Source,
                    ProviderVenueId = providerVenueId,
                    Postcode        = postcode
                };

                Debug.WriteLine(
                    $">>>> Creating ProviderQualification {addQualificationViewModel.LarId} - {addQualificationViewModel.QualificationId} - {addQualificationViewModel.ProviderVenueId}");
                await _providerQualificationService.CreateProviderQualificationAsync(addQualificationViewModel);
            }
            // Delete Provider Venue Qualification
            else if (providerQualificationViewModel != null && !providerVenueQualification.QualificationIsOffered)
            {
                Debug.WriteLine(
                    $">>>> Removing ProviderQualification {providerVenueId} - {qualificationId} ({providerQualificationViewModel.ProviderVenueId} - {providerQualificationViewModel.QualificationId})");
                await _providerQualificationService.RemoveProviderQualificationAsync(providerVenueId, qualificationId);
            }
        }
Exemple #2
0
        private async Task <int> CreateOrUpdateQualificationAsync(ProviderVenueQualificationDto providerVenueQualification, int providerVenueId)
        {
            var qualification = await _qualificationService.GetQualificationAsync(providerVenueQualification.LarId);

            int qualificationId;

            if (qualification == null)
            {
                var missingQualificationViewModel = new MissingQualificationViewModel
                {
                    LarId           = providerVenueQualification.LarId,
                    ProviderVenueId = providerVenueId,
                    Title           = providerVenueQualification.QualificationTitle,
                    ShortTitle      = providerVenueQualification.QualificationShortTitle,
                    Source          = Source
                };

                qualificationId = await _qualificationService.CreateQualificationEntityAsync(missingQualificationViewModel);

                Debug.WriteLine($">>>> Created Removing Qualification {qualificationId}");
            }
            else
            {
                qualificationId = qualification.Id;
            }

            return(qualificationId);
        }
Exemple #3
0
        private async Task <int> CreateOrUpdateProviderAsync(ProviderVenueQualificationDto providerVenueQualification)
        {
            int providerId;
            var provider = await _providerService.SearchAsync(providerVenueQualification.UkPrn);

            if (provider == null)
            {
                //Create the new provider
                var createProviderViewModel = new CreateProviderDetailViewModel
                {
                    UkPrn       = providerVenueQualification.UkPrn,
                    Name        = providerVenueQualification.Name,
                    DisplayName = !string.IsNullOrWhiteSpace(providerVenueQualification.DisplayName)
                        ? providerVenueQualification.DisplayName
                        : providerVenueQualification.Name,
                    PrimaryContact        = providerVenueQualification.PrimaryContact,
                    PrimaryContactEmail   = providerVenueQualification.PrimaryContactEmail,
                    PrimaryContactPhone   = providerVenueQualification.PrimaryContactPhone,
                    SecondaryContact      = providerVenueQualification.SecondaryContact,
                    SecondaryContactEmail = providerVenueQualification.SecondaryContactEmail,
                    SecondaryContactPhone = providerVenueQualification.SecondaryContactPhone,
                    IsEnabledForReferral  = providerVenueQualification.IsEnabledForReferral,
                    IsCdfProvider         = providerVenueQualification.IsCdfProvider,
                    //NOTE: IsTLevelProvider needs to be set manually
                    Source = Source
                };

                providerId = await _providerService.CreateProviderAsync(createProviderViewModel);

                Debug.WriteLine($"Created provider with id {providerId} for UKPRN {providerVenueQualification.UkPrn}");
            }
            else
            {
                //Update an existing provider
                providerId = provider.Id;

                var providerViewModel = await _providerService.GetProviderDetailByIdAsync(providerId);

                if (providerViewModel != null)
                {
                    var providerValidator =
                        ValidateProviderToUpdate(providerViewModel, providerVenueQualification);

                    if (providerValidator.IsUpdated)
                    {
                        await _providerService.UpdateProviderDetailAsync(providerValidator
                                                                         .ProviderDetailViewModel);
                    }
                }
            }

            return(providerId);
        }
Exemple #4
0
        private async Task <string> CreateOrUpdateQualificationRouteMappingAsync(ProviderVenueQualificationDto providerVenueQualification,
                                                                                 int qualificationId)
        {
            var invalidRouteNames = new List <string>();

            foreach (var routeName in providerVenueQualification.Routes)
            {
                var route = await _routePathService.GetRouteSummaryByNameAsync(routeName);

                if (route == null)
                {
                    invalidRouteNames.Add($"{routeName}");
                    continue;
                }

                var routeMapping =
                    await _qualificationRouteMappingService.GetQualificationRouteMappingAsync(route.Id,
                                                                                              qualificationId);

                if (routeMapping == null)
                {
                    var qualificationRouteMappingViewModel = new QualificationRouteMappingViewModel
                    {
                        RouteId         = route.Id,
                        QualificationId = qualificationId,
                        Source          = Source
                    };

                    await _qualificationRouteMappingService.CreateQualificationRouteMappingAsync(
                        qualificationRouteMappingViewModel);
                }
            }

            if (invalidRouteNames.Any())
            {
                var sb = new StringBuilder($"Data Error: Route{(invalidRouteNames.Count > 1 ? "s" : "")} ");

                for (var i = 0; i < invalidRouteNames.Count; i++)
                {
                    sb.Append($"{(i > 0 ? ", " : "")}'{invalidRouteNames[i]}'");
                }

                sb.Append($" not found in existing Routes. UkPrn: {providerVenueQualification.UkPrn}, postcode: {providerVenueQualification.VenuePostcode}, LAR Id: {providerVenueQualification.LarId}");

                return(sb.ToString());
            }

            return(null);
        }
Exemple #5
0
        private static (bool IsUpdated, ProviderVenueDetailViewModel ProviderVenueDetailViewModel) ValidateProviderVenueToUpdate(ProviderVenueDetailViewModel providerVenueDetailViewModel, ProviderVenueQualificationDto providerVenueQualification)
        {
            var isUpdated = false;

            if (ValidateToUpdate(providerVenueDetailViewModel.Name, providerVenueQualification.VenueName))
            {
                providerVenueDetailViewModel.Name = providerVenueQualification.VenueName;
                isUpdated = true;
            }

            if (providerVenueDetailViewModel.IsEnabledForReferral != providerVenueQualification.VenueIsEnabledForReferral)
            {
                providerVenueDetailViewModel.IsEnabledForReferral = providerVenueQualification.VenueIsEnabledForReferral;
                isUpdated = true;
            }

            return(isUpdated, providerVenueDetailViewModel);
        }
Exemple #6
0
        private static (bool IsUpdated, ProviderDetailViewModel ProviderDetailViewModel) ValidateProviderToUpdate(ProviderDetailViewModel providerDetailViewModel, ProviderVenueQualificationDto providerVenueQualification)
        {
            var isUpdated = false;

            if (ValidateToUpdate(providerDetailViewModel.Name, providerVenueQualification.Name))
            {
                providerDetailViewModel.Name = providerVenueQualification.Name;
                isUpdated = true;
            }

            if (ValidateToUpdate(providerDetailViewModel.DisplayName, providerVenueQualification.DisplayName))
            {
                providerDetailViewModel.DisplayName = providerVenueQualification.DisplayName;
                isUpdated = true;
            }

            if (ValidateToUpdate(providerDetailViewModel.PrimaryContact, providerVenueQualification.PrimaryContact))
            {
                providerDetailViewModel.PrimaryContact = providerVenueQualification.PrimaryContact;
                isUpdated = true;
            }

            if (ValidateToUpdate(providerDetailViewModel.PrimaryContactEmail, providerVenueQualification.PrimaryContactEmail))
            {
                providerDetailViewModel.PrimaryContactEmail = providerVenueQualification.PrimaryContactEmail;
                isUpdated = true;
            }

            if (ValidateToUpdate(providerDetailViewModel.PrimaryContactPhone, providerVenueQualification.PrimaryContactPhone))
            {
                providerDetailViewModel.PrimaryContactPhone = providerVenueQualification.PrimaryContactPhone;
                isUpdated = true;
            }

            if (ValidateToUpdate(providerDetailViewModel.SecondaryContact, providerVenueQualification.SecondaryContact))
            {
                providerDetailViewModel.SecondaryContact = providerVenueQualification.SecondaryContact;
                isUpdated = true;
            }

            if (ValidateToUpdate(providerDetailViewModel.SecondaryContactEmail, providerVenueQualification.SecondaryContactEmail))
            {
                providerDetailViewModel.SecondaryContactEmail = providerVenueQualification.SecondaryContactEmail;
                isUpdated = true;
            }

            if (ValidateToUpdate(providerDetailViewModel.SecondaryContactPhone, providerVenueQualification.SecondaryContactPhone))
            {
                providerDetailViewModel.SecondaryContactPhone = providerVenueQualification.SecondaryContactPhone;
                isUpdated = true;
            }

            if (!providerDetailViewModel.IsEnabledForReferral.HasValue ||
                providerDetailViewModel.IsEnabledForReferral.Value != providerVenueQualification.IsEnabledForReferral)
            {
                providerDetailViewModel.IsEnabledForReferral = providerVenueQualification.IsEnabledForReferral;
                isUpdated = true;
            }

            if (providerDetailViewModel.IsCdfProvider != providerVenueQualification.IsCdfProvider)
            {
                providerDetailViewModel.IsCdfProvider = providerVenueQualification.IsCdfProvider;
                isUpdated = true;
            }

            return(isUpdated, providerDetailViewModel);
        }
Exemple #7
0
        private async Task <ProviderVenueDetailViewModel> CreateOrUpdateProviderVenueAsync(ProviderVenueQualificationDto providerVenueQualification, int providerId)
        {
            if (string.IsNullOrEmpty(providerVenueQualification.VenuePostcode))
            {
                return(null);
            }

            var venueViewModel = await _providerVenueService.GetVenueWithTrimmedPostcodeAsync(providerId,
                                                                                              providerVenueQualification.VenuePostcode);

            if (venueViewModel == null)
            {
                var addProviderVenue = new AddProviderVenueViewModel
                {
                    ProviderId = providerId,
                    Postcode   = providerVenueQualification.VenuePostcode,
                    Source     = Source
                };

                var venueId = await _providerVenueService.CreateVenueAsync(addProviderVenue);

                Debug.WriteLine(
                    $"Created venue with id {venueId} for provider {providerId} and postcode {providerVenueQualification.VenuePostcode}");

                venueViewModel = await _providerVenueService.GetVenueAsync(venueId);
            }

            var providerVenueValidator = ValidateProviderVenueToUpdate(venueViewModel, providerVenueQualification);

            if (providerVenueValidator.IsUpdated)
            {
                await _providerVenueService.UpdateVenueAsync(providerVenueValidator.ProviderVenueDetailViewModel);
            }

            // Provider Venue Delete
            if (venueViewModel.IsRemoved != providerVenueQualification.VenueIsRemoved)
            {
                var removeProviderVenueViewModel = new RemoveProviderVenueViewModel
                {
                    Postcode        = venueViewModel.Postcode,
                    ProviderId      = venueViewModel.ProviderId,
                    ProviderVenueId = venueViewModel.Id
                };

                if (providerVenueQualification.VenueIsRemoved)
                {
                    await _providerVenueService.UpdateVenueAsync(removeProviderVenueViewModel);
                }
                else
                {
                    await _providerVenueService.UpdateVenueToNotRemovedAsync(removeProviderVenueViewModel);
                }
            }

            return(venueViewModel);
        }