private UpsertApprenticeshipUploadRowsRecord CreateRecord(
                Guid apprenticeshipId,
                Guid apprenticeshipLocationId,
                int standardCode,
                int standardVersion,
                string apprenticeshipInformation,
                string apprenticeshipWebpage,
                string contactEmail,
                string contactPhone,
                string contactUrl,
                string deliveryMethod,
                string venue,
                string yourVenueReference,
                string radius,
                string deliveryModes,
                string nationalDelivery,
                string subRegions,
                Guid?venueId,
                IEnumerable <string> errors = null)
            {
                var errorsArray = errors?.ToArray() ?? Array.Empty <string>();
                var isValid     = !errorsArray.Any();

                var resolvedDeliveryModes  = ParsedCsvApprenticeshipRow.ResolveDeliveryModes(deliveryModes);
                var resolvedDeliveryMethod = ParsedCsvApprenticeshipRow.ResolveDeliveryMethod(deliveryMethod, resolvedDeliveryModes);

                return(new UpsertApprenticeshipUploadRowsRecord()
                {
                    RowNumber = _records.Count + 2,
                    IsValid = isValid,
                    ApprenticeshipId = apprenticeshipId,
                    ApprenticeshipLocationId = apprenticeshipLocationId,
                    StandardCode = standardCode,
                    StandardVersion = standardVersion,
                    ApprenticeshipInformation = apprenticeshipInformation,
                    ApprenticeshipWebpage = apprenticeshipWebpage,
                    ContactEmail = contactEmail,
                    ContactPhone = contactPhone,
                    ContactUrl = contactUrl,
                    DeliveryMethod = deliveryMethod,
                    VenueName = venue,
                    YourVenueReference = yourVenueReference,
                    Radius = radius,
                    DeliveryModes = deliveryModes,
                    NationalDelivery = nationalDelivery,
                    SubRegions = subRegions,
                    VenueId = venueId,
                    Errors = errors,
                    ResolvedDeliveryModes = resolvedDeliveryModes,
                    ResolvedDeliveryMethod = resolvedDeliveryMethod,
                    ResolvedNationalDelivery = ParsedCsvApprenticeshipRow.ResolveNationalDelivery(nationalDelivery, subRegions, resolvedDeliveryMethod),
                    ResolvedRadius = ParsedCsvApprenticeshipRow.ResolveRadius(radius),
                    ResolvedSubRegions = ParsedCsvApprenticeshipRow.ResolveSubRegions(subRegions, _allRegions)?.Select(r => r.Id)
                });
            }
 public static IEnumerable <CsvApprenticeshipRow> FromModel(Apprenticeship apprenticeship, IReadOnlyCollection <Region> allRegions) =>
 apprenticeship.ApprenticeshipLocations
 .OrderBy(l => l.Venue?.VenueName ?? string.Empty)
 .ThenBy(l => l.ApprenticeshipLocationType)
 .Select(l => new CsvApprenticeshipRow()
 {
     ApprenticeshipInformation = apprenticeship.MarketingInformation,
     ApprenticeshipWebpage     = apprenticeship.ApprenticeshipWebsite,
     ContactEmail       = apprenticeship.ContactEmail,
     ContactPhone       = apprenticeship.ContactTelephone,
     ContactUrl         = apprenticeship.ContactWebsite,
     DeliveryMethod     = ParsedCsvApprenticeshipRow.MapDeliveryMethod(l.ApprenticeshipLocationType),
     DeliveryModes      = ParsedCsvApprenticeshipRow.MapDeliveryModes(l.DeliveryModes),
     NationalDelivery   = ParsedCsvApprenticeshipRow.MapNationalDelivery(l.National),
     Radius             = (l.Radius ?? (l.ApprenticeshipLocationType == ApprenticeshipLocationType.ClassroomBased ? 30 : (int?)null))?.ToString() ?? string.Empty,
     StandardCode       = ParsedCsvApprenticeshipRow.MapStandardCode(apprenticeship.Standard.StandardCode),
     StandardVersion    = ParsedCsvApprenticeshipRow.MapStandardVersion(apprenticeship.Standard.Version),
     SubRegion          = ParsedCsvApprenticeshipRow.MapSubRegions(l.SubRegionIds, allRegions),
     VenueName          = l.Venue?.VenueName,
     YourVenueReference = l.Venue?.ProviderVenueRef
 });