示例#1
0
        public override ServiceChannelEmail TranslateVmToEntity(VmEmailData vModel)
        {
            if (vModel == null)
            {
                return(null);
            }
            bool existsById             = vModel.Id.IsAssigned();
            var  existsByOwnerReference = !vModel.Id.IsAssigned() && vModel.OwnerReferenceId.IsAssigned();
            Guid languageId             = vModel.LanguageId.IsAssigned()
                ? vModel.LanguageId.Value
                : languageCache.Get(RequestLanguageCode.ToString());

            var translation = CreateViewModelEntityDefinition(vModel)
                              .UseDataContextCreate(input => !existsById && !existsByOwnerReference)
                              .UseDataContextUpdate(input => existsById || existsByOwnerReference, input => output =>
                                                    (!input.Id.IsAssigned() || input.Id == output.EmailId) &&
                                                    (!input.OwnerReferenceId.IsAssigned() || output.ServiceChannelVersionedId == input.OwnerReferenceId) &&
                                                    (languageId == output.Email.LocalizationId),
                                                    create => create.UseDataContextCreate(c => true)
                                                    );

            if (existsByOwnerReference)
            {
                var serviceChannelEmail = translation.GetFinal();
                if (serviceChannelEmail.Created > DateTime.MinValue)
                {
                    vModel.Id = serviceChannelEmail.EmailId;
                }
            }

            return(translation
                   .AddNavigation(input => input, output => output.Email)
                   .GetFinal());
        }
示例#2
0
        public override ServiceChannelPhone TranslateVmToEntity(VmPhone vModel)
        {
            if (vModel == null)
            {
                return(null);
            }

            bool exists             = vModel.Id.IsAssigned();
            bool updateWithLanguage = vModel.OwnerReferenceId.IsAssigned() && vModel.LanguageId.IsAssigned();
            Guid?languageId         = vModel.LanguageId ?? languageCache.Get(RequestLanguageCode.ToString());
            var  translation        = CreateViewModelEntityDefinition(vModel)
                                      .UseDataContextCreate(input => !exists && !updateWithLanguage)
                                      .UseDataContextUpdate(input => exists || updateWithLanguage,
                                                            input => output =>
                                                            (!input.Id.IsAssigned() || input.Id == output.PhoneId) &&
                                                            (languageId == output.Phone.LocalizationId) &&
                                                            (!input.OwnerReferenceId.IsAssigned() || output.ServiceChannelVersionedId == vModel.OwnerReferenceId),
                                                            e => e.UseDataContextCreate(x => true));

            if (!exists && updateWithLanguage)
            {
                var serviceChannelPhone = translation.GetFinal();
                if (serviceChannelPhone.Created > DateTime.MinValue)
                {
                    vModel.Id = serviceChannelPhone.PhoneId;
                }
            }

            return(translation
                   .AddNavigation(input => input, output => output.Phone)
                   .GetFinal());
        }
 public Kiss4BookmarkDataProvider(SqlConnection sqlConnection,
                                  RequestLanguageCode languageCode,
                                  ILogger logger,
                                  IKiss4TranslationProvider translation,
                                  SqlParameterReplacer sqlParameterReplacer,
                                  ContextValuesProvider contextValuesProvider)
 {
     _sqlConnection         = sqlConnection;
     _languageCode          = languageCode;
     _logger                = logger;
     _translation           = translation;
     _sqlParameterReplacer  = sqlParameterReplacer;
     _contextValuesProvider = contextValuesProvider;
 }
示例#4
0
        public override ServiceChannelAttachment TranslateVmToEntity(VmChannelAttachment vModel)
        {
            if (vModel.LocalizationId.IsAssigned())
            {
                SetLanguage(vModel.LocalizationId.Value);
            }
            var transaltionDefinition = CreateViewModelEntityDefinition <ServiceChannelAttachment>(vModel)
                                        .UseDataContextUpdate(
                i => i.OwnerReferenceId.IsAssigned() && i.Id.IsAssigned(),
                i => o =>
                (i.OwnerReferenceId == o.ServiceChannelVersionedId && o.AttachmentId == i.Id) &&
                (languageCache.Get(RequestLanguageCode.ToString()) == o.Attachment.LocalizationId)
                )
                                        .AddNavigation(input => input, output => output.Attachment);

            var entity = transaltionDefinition.GetFinal();

            return(entity);
        }
        public override StatutoryServiceGeneralDescriptionVersioned TranslateVmToEntity(VmGeneralDescriptionBase vModel)
        {
            var names = new List <VmName>();

            names.AddNullRange(vModel.Name?.Select(pair => CreateName(pair.Key, pair.Value, vModel, NameTypeEnum.Name)));
            var serviceTypeService = typesCache.Get <ServiceType>(ServiceTypeEnum.Service.ToString());
            var descriptions       = new List <VmDescription>();

            descriptions.AddNullRange(vModel.ShortDescription?.Select(pair => CreateDescription(pair.Key, pair.Value, vModel, DescriptionTypeEnum.ShortDescription)));
            descriptions.AddNullRange(vModel.Description?.Select(pair => CreateDescription(pair.Key, pair.Value, vModel, DescriptionTypeEnum.Description)));
            descriptions.AddNullRange(vModel.BackgroundDescription?.Select(pair => CreateDescription(pair.Key, pair.Value, vModel, DescriptionTypeEnum.BackgroundDescription)));
            descriptions.AddNullRange(vModel.DeadLineInformation?.Select(pair => CreateDescription(pair.Key, pair.Value, vModel, DescriptionTypeEnum.DeadLineAdditionalInfo, serviceTypeService == vModel.ServiceType)));
            descriptions.AddNullRange(vModel.ProcessingTimeInformation?.Select(pair => CreateDescription(pair.Key, pair.Value, vModel, DescriptionTypeEnum.ProcessingTimeAdditionalInfo, serviceTypeService == vModel.ServiceType)));
            descriptions.AddNullRange(vModel.ValidityTimeInformation?.Select(pair => CreateDescription(pair.Key, pair.Value, vModel, DescriptionTypeEnum.ValidityTimeAdditionalInfo, serviceTypeService == vModel.ServiceType)));
            descriptions.AddNullRange(vModel.UserInstruction?.Select(pair => CreateDescription(pair.Key, pair.Value, vModel, DescriptionTypeEnum.ServiceUserInstruction)));
            descriptions.AddNullRange(vModel.ChargeType?.AdditionalInformation?.Select(pair => CreateDescription(pair.Key, pair.Value, vModel, DescriptionTypeEnum.ChargeTypeAdditionalInfo)));

            var definition = CreateViewModelEntityDefinition(vModel)
                             .DisableAutoTranslation()
                             .AddSimple(i => i?.ChargeType.ChargeType, o => o.ChargeTypeId)
                             .AddSimple(i => i.ServiceType.HasValue ? i.ServiceType.Value : throw new PtvArgumentException("Service type has to be provided"), o => o.TypeId)
                             .AddLanguageAvailability(i => i, o => o)
                             .AddCollection(i => names, o => o.Names, true)
                             .AddCollection(i => descriptions, o => o.Descriptions, true)
                             .AddCollection(i => i.ConditionOfServiceUsage?.Select(
                                                pair => new VmServiceRequirement()
            {
                Id = i.Id, Requirement = pair.Value, LocalizationId = languageCache.Get(pair.Key)
            }), o => o.StatutoryServiceRequirements, true)
                             .AddCollectionWithKeep(i => (i.Laws?.Where(x => !string.IsNullOrEmpty(x.UrlAddress.TryGet(RequestLanguageCode.ToString()))) ?? new List <VmLaw>()).Select(
                                                        l =>
            {
                l.OwnerReferenceId = i.Id;
                return(l);
            }), output => output.StatutoryServiceLaws, c =>
            {
                c.Check(h => h.Law).Check(h => h.Names).Any();
                c.Check(h => h.Law).Check(h => h.WebPages).Any();
                c.Check(h => h.Law).Check(h => h.WebPages).Check(h => h.WebPage).Check(h => h.LocalizationId).Not(RequestLanguageId);
            })
                             .AddCollectionWithRemove(i => (i.TargetGroups?.Select(x => new VmTargetGroupListItem {
                Id = x, OwnerReferenceId = i.Id
            }) ?? new List <VmTargetGroupListItem>()), o => o.TargetGroups, x => true);

            return(definition.GetFinal());
        }
        public override StatutoryServiceGeneralDescriptionVersioned TranslateVmToEntity(VmGeneralDescription vModel)
        {
            var translationDefinition = CreateViewModelEntityDefinition <StatutoryServiceGeneralDescriptionVersioned>(vModel)
                                        .DisableAutoTranslation()
                                        .UseDataContextCreate(input => !input.Id.HasValue, output => output.Id, input => Guid.NewGuid())
                                        .UseDataContextLocalizedUpdate(input => input.Id.HasValue, input => output => input.Id.Value == output.Id)
                                        .UseVersioning <StatutoryServiceGeneralDescriptionVersioned, StatutoryServiceGeneralDescription>(o => o)
                                        .AddLanguageAvailability(o => o);

            var order = 1;

            vModel.Laws?.ForEach(i =>
            {
                i.OrderNumber      = order++;
                i.OwnerReferenceId = vModel.Id;
            });
            vModel.ServiceClasses?.ForEach(i => i.OwnerReferenceId    = vModel.Id);
            vModel.OntologyTerms?.ForEach(i => i.OwnerReferenceId     = vModel.Id);
            vModel.LifeEvents?.ForEach(i => i.OwnerReferenceId        = vModel.Id);
            vModel.IndustrialClasses?.ForEach(i => i.OwnerReferenceId = vModel.Id);

            var names = new List <VmName>()
            {
                new VmName {
                    Name = vModel.Name.TryGet(RequestLanguageCode.ToString()), TypeId = typesCache.Get <NameType>(NameTypeEnum.Name.ToString()), OwnerReferenceId = vModel.Id
                }
            };

            var descriptions = new List <VmDescription>()
            {
                new VmDescription {
                    Description = vModel.ShortDescription.TryGet(RequestLanguageCode.ToString()), TypeId = typesCache.Get <DescriptionType>(DescriptionTypeEnum.ShortDescription.ToString()), OwnerReferenceId = vModel.Id
                },
                new VmDescription {
                    Description = vModel.Description.TryGet(RequestLanguageCode.ToString()), TypeId = typesCache.Get <DescriptionType>(DescriptionTypeEnum.Description.ToString()), OwnerReferenceId = vModel.Id
                },
                new VmDescription {
                    Description = vModel.BackgroundDescription.TryGet(RequestLanguageCode.ToString()), TypeId = typesCache.Get <DescriptionType>(DescriptionTypeEnum.BackgroundDescription.ToString()), OwnerReferenceId = vModel.Id
                },
                new VmDescription {
                    Description = vModel.UserInstruction.TryGet(RequestLanguageCode.ToString()), TypeId = typesCache.Get <DescriptionType>(DescriptionTypeEnum.ServiceUserInstruction.ToString()), OwnerReferenceId = vModel.Id
                },
                new VmDescription {
                    Description = vModel.AdditionalInformation.TryGet(RequestLanguageCode.ToString()), TypeId = typesCache.Get <DescriptionType>(DescriptionTypeEnum.ChargeTypeAdditionalInfo.ToString()), OwnerReferenceId = vModel.Id
                }
            };

            if (!typesCache.Compare <ServiceType>(vModel.TypeId, ServiceTypeEnum.Service.ToString()))
            {
                descriptions.Add(new VmDescription {
                    Description = vModel.AdditionalInformationDeadLine.TryGet(RequestLanguageCode.ToString()), TypeId = typesCache.Get <DescriptionType>(DescriptionTypeEnum.DeadLineAdditionalInfo.ToString()), OwnerReferenceId = vModel.Id
                });
                descriptions.Add(new VmDescription {
                    Description = vModel.AdditionalInformationProcessingTime.TryGet(RequestLanguageCode.ToString()), TypeId = typesCache.Get <DescriptionType>(DescriptionTypeEnum.ProcessingTimeAdditionalInfo.ToString()), OwnerReferenceId = vModel.Id
                });
                descriptions.Add(new VmDescription {
                    Description = vModel.AdditionalInformationValidityTime.TryGet(RequestLanguageCode.ToString()), TypeId = typesCache.Get <DescriptionType>(DescriptionTypeEnum.ValidityTimeAdditionalInfo.ToString()), OwnerReferenceId = vModel.Id
                });
            }
            else
            {
                if (vModel.Id.IsAssigned())
                {
                    descriptions.Add(new VmDescription {
                        TypeId = typesCache.Get <DescriptionType>(DescriptionTypeEnum.DeadLineAdditionalInfo.ToString()), OwnerReferenceId = vModel.Id
                    });
                    descriptions.Add(new VmDescription {
                        TypeId = typesCache.Get <DescriptionType>(DescriptionTypeEnum.ProcessingTimeAdditionalInfo.ToString()), OwnerReferenceId = vModel.Id
                    });
                    descriptions.Add(new VmDescription {
                        TypeId = typesCache.Get <DescriptionType>(DescriptionTypeEnum.ValidityTimeAdditionalInfo.ToString()), OwnerReferenceId = vModel.Id
                    });
                }
            }

            translationDefinition
            .AddSimple(i => i.TypeId, o => o.TypeId)
            .AddSimple(i => i.ChargeTypeId, o => o.ChargeTypeId)
            .AddCollection(i => names, o => o.Names)
            .AddCollection(i => descriptions, o => o.Descriptions)
            .AddCollection(i => new List <VmServiceRequirement> {
                new VmServiceRequirement {
                    Requirement = vModel.ServiceUsage.TryGet(RequestLanguageCode.ToString()), Id = vModel.Id
                }
            }, o => o.StatutoryServiceRequirements)
            .AddCollection(i => i.TargetGroups.Select(x => new VmTargetGroupListItem {
                Id = x, OwnerReferenceId = vModel.Id
            }), o => o.TargetGroups)
            .AddCollection(i => i.ServiceClasses, o => o.ServiceClasses)
            .AddCollectionWithKeep(i => i.Laws.Where(x => !string.IsNullOrEmpty(x.UrlAddress.TryGet(RequestLanguageCode.ToString()))), o => o.StatutoryServiceLaws, x => true)
            .AddCollection(i => i.IndustrialClasses, o => o.IndustrialClasses)
            .AddCollection(i => i.LifeEvents, o => o.LifeEvents)
            .AddCollection(i => i.OntologyTerms, o => o.OntologyTerms);

            var entity = translationDefinition.GetFinal();

            return(entity);
        }
示例#7
0
        public override ServiceVersioned TranslateVmToEntity(VmServiceBase vModel)
        {
            var names = new List <VmName>();

            names.AddNullRange(CreateNames(vModel, vModel.Name, NameTypeEnum.Name));
            names.AddNullRange(CreateNames(vModel, vModel.AlternateName, NameTypeEnum.AlternateName));
            var serviceType   = typesCache.Get <ServiceType>(ServiceTypeEnum.Service.ToString());
            var vmServiceType = vModel.GeneralDescriptionServiceTypeId.IsAssigned() ? vModel.GeneralDescriptionServiceTypeId : vModel.ServiceType;
            var descriptions  = new List <VmDescription>();

            descriptions.AddNullRange(vModel.ShortDescription?.Select(pair => CreateDescription(pair.Key, pair.Value, vModel, DescriptionTypeEnum.ShortDescription)));
            descriptions.AddNullRange(vModel.Description?.Select(pair => CreateDescription(pair.Key, pair.Value, vModel, DescriptionTypeEnum.Description)));
            descriptions.AddNullRange(vModel.DeadLineInformation?.Select(pair => CreateDescription(pair.Key, pair.Value, vModel, DescriptionTypeEnum.DeadLineAdditionalInfo, serviceType == vmServiceType)));
            descriptions.AddNullRange(vModel.ProcessingTimeInformation?.Select(pair => CreateDescription(pair.Key, pair.Value, vModel, DescriptionTypeEnum.ProcessingTimeAdditionalInfo, serviceType == vmServiceType)));
            descriptions.AddNullRange(vModel.ValidityTimeInformation?.Select(pair => CreateDescription(pair.Key, pair.Value, vModel, DescriptionTypeEnum.ValidityTimeAdditionalInfo, serviceType == vmServiceType)));
            descriptions.AddNullRange(vModel.UserInstruction?.Select(pair => CreateDescription(pair.Key, pair.Value, vModel, DescriptionTypeEnum.ServiceUserInstruction)));
            descriptions.AddNullRange(vModel.ChargeType?.AdditionalInformation?.Select(pair => CreateDescription(pair.Key, pair.Value, vModel, DescriptionTypeEnum.ChargeTypeAdditionalInfo)));
            var languageCount = 0;
            var lawCount      = 0;
            var definition    = CreateViewModelEntityDefinition(vModel)
                                .DisableAutoTranslation()
                                .AddLanguageAvailability(i => i, o => o)
                                .AddCollectionWithRemove(i => i.ResponsibleOrganizations?.Select(x => new VmTreeItem {
                Id = x, OwnerReferenceId = i.Id
            }), o => o.OrganizationServices, r => true)
                                .AddSimple(i => i.Organization ?? throw new ArgumentNullException("Organization cannot be empty"), o => o.OrganizationId)
                                .AddSimple(i => i.FundingType, o => o.FundingTypeId)
                                .AddCollection(i => names, o => o.ServiceNames, true)
                                .AddCollection(i => descriptions, o => o.ServiceDescriptions, true)
                                .AddSimple(i => i.GeneralDescriptionId, o => o.StatutoryServiceGeneralDescriptionId)
                                .AddCollection(i => i.ConditionOfServiceUsage?.Select(
                                                   pair => new VmServiceRequirement()
            {
                Id = i.Id, Requirement = pair.Value, LocalizationId = languageCache.Get(pair.Key)
            }), o => o.ServiceRequirements, true)
                                .AddPartial(i =>
            {
                i.AreaInformation.OwnerReferenceId = i.Id;
                return(i.AreaInformation);
            })
                                .AddCollectionWithKeep(i => i.ServiceVouchers.SelectMany(pair =>
            {
                var localizationId = languageCache.Get(pair.Key);
                return(pair.Value.Select(sv =>
                {
                    sv.OwnerReferenceId = i.Id;
                    sv.LocalizationId = localizationId;
                    return sv;
                }));
            }), o => o.ServiceWebPages, c => c.Check(h => h.WebPage).Check(h => h.LocalizationId).Not(RequestLanguageId))
                                .AddCollectionWithKeep(i => (i.Laws?.Where(x => !string.IsNullOrEmpty(x.UrlAddress.TryGet(RequestLanguageCode.ToString())) || !string.IsNullOrEmpty(x.Name.TryGet(RequestLanguageCode.ToString()))) ?? new List <VmLaw>()).Select(
                                                           l =>
            {
                l.OwnerReferenceId = i.Id;
                l.OrderNumber      = lawCount++;
                return(l);
            }), output => output.ServiceLaws, c =>
            {
                c.Check(h => h.Law).Check(h => h.Names).Any();
                c.Check(h => h.Law).Check(h => h.WebPages).Any();
                c.Check(h => h.Law).Check(h => h.WebPages).Check(h => h.WebPage).Check(h => h.LocalizationId).Not(RequestLanguageId);
            })
                                .AddCollectionWithRemove(i => i.Languages.Select(x => new VmListItem {
                Id = x, OrderNumber = languageCount++, OwnerReferenceId = i.Id
            }), o => o.ServiceLanguages, r => true)
                                .AddCollectionWithRemove(i => (i.TargetGroups?.Select(x => new VmTargetGroupListItem {
                Id = x, OwnerReferenceId = i.Id
            }) ?? new List <VmTargetGroupListItem>()).Concat(
                                                             i.OverrideTargetGroups?.Select(x => new VmTargetGroupListItem {
                Id = x, Override = true, OwnerReferenceId = i.Id
            }) ?? new List <VmTargetGroupListItem>()),
                                                         o => o.ServiceTargetGroups, x => true)
                                .AddCollectionWithRemove(i =>
            {
                var number = 1;
                i.ServiceProducers.ForEach(p => { p.Order            = number++;
                                                  p.OwnerReferenceId = i.Id; });
                return(i.ServiceProducers);
            }, o => o.ServiceProducers, r => true);

            return(definition.GetFinal());
        }