示例#1
0
        public static T Resolve <T>(this T candidateViewModel, ApplicationDetail apprenticeshipApplicationDetail)
            where T : CandidateViewModelBase
        {
            candidateViewModel.Id           = apprenticeshipApplicationDetail.CandidateId;
            candidateViewModel.EmailAddress = apprenticeshipApplicationDetail.CandidateDetails.EmailAddress;
            candidateViewModel.FirstName    = apprenticeshipApplicationDetail.CandidateDetails.FirstName;
            candidateViewModel.LastName     = apprenticeshipApplicationDetail.CandidateDetails.LastName;
            candidateViewModel.DateOfBirth  = apprenticeshipApplicationDetail.CandidateDetails.DateOfBirth;
            candidateViewModel.PhoneNumber  = apprenticeshipApplicationDetail.CandidateDetails.PhoneNumber;
            candidateViewModel.Address      =
                ApplicationConverter.GetAddressViewModel(apprenticeshipApplicationDetail.CandidateDetails.Address);
            candidateViewModel.Qualifications =
                ApplicationConverter.GetQualificationsViewModels(apprenticeshipApplicationDetail.CandidateInformation.Qualifications);
            candidateViewModel.HasQualifications =
                ApplicationConverter.GetQualificationsViewModels(apprenticeshipApplicationDetail.CandidateInformation.Qualifications)
                .Any();
            candidateViewModel.WorkExperience =
                ApplicationConverter.GetWorkExperiencesViewModels(apprenticeshipApplicationDetail.CandidateInformation.WorkExperience);
            candidateViewModel.HasWorkExperience =
                ApplicationConverter.GetWorkExperiencesViewModels(apprenticeshipApplicationDetail.CandidateInformation.WorkExperience)
                .Any();
            candidateViewModel.EmployerQuestionAnswers = new EmployerQuestionAnswersViewModel
            {
                CandidateAnswer1 = apprenticeshipApplicationDetail.AdditionalQuestion1Answer,
                CandidateAnswer2 = apprenticeshipApplicationDetail.AdditionalQuestion2Answer
            };

            return(candidateViewModel);
        }
示例#2
0
        public static T Resolve <T>(this T candidateViewModel, ApplicationDetail applicationDetail)
            where T : CandidateViewModelBase
        {
            candidateViewModel.Id           = applicationDetail.CandidateId;
            candidateViewModel.EmailAddress = applicationDetail.CandidateDetails.EmailAddress;
            candidateViewModel.FirstName    = applicationDetail.CandidateDetails.FirstName;
            candidateViewModel.LastName     = applicationDetail.CandidateDetails.LastName;
            candidateViewModel.DateOfBirth  = applicationDetail.CandidateDetails.DateOfBirth;
            candidateViewModel.PhoneNumber  = applicationDetail.CandidateDetails.PhoneNumber;
            candidateViewModel.Address      = ApplicationConverter.GetAddressViewModel(applicationDetail.CandidateDetails.Address);

            candidateViewModel.Qualifications    = ApplicationConverter.GetQualificationsViewModels(applicationDetail.CandidateInformation.Qualifications);
            candidateViewModel.HasQualifications = candidateViewModel.Qualifications.Any();

            candidateViewModel.WorkExperience    = ApplicationConverter.GetWorkExperiencesViewModels(applicationDetail.CandidateInformation.WorkExperience);
            candidateViewModel.HasWorkExperience = candidateViewModel.WorkExperience.Any();

            candidateViewModel.TrainingCourses    = ApplicationConverter.GetTrainingCourseViewModels(applicationDetail.CandidateInformation.TrainingCourses);
            candidateViewModel.HasTrainingCourses = candidateViewModel.TrainingCourses.Any();

            candidateViewModel.MonitoringInformation   = ApplicationConverter.GetMonitoringInformationViewModel(applicationDetail.CandidateInformation.AboutYou, applicationDetail.CandidateInformation.DisabilityStatus);
            candidateViewModel.EmployerQuestionAnswers = new EmployerQuestionAnswersViewModel
            {
                CandidateAnswer1 = applicationDetail.AdditionalQuestion1Answer,
                CandidateAnswer2 = applicationDetail.AdditionalQuestion2Answer
            };

            return(candidateViewModel);
        }
 private static RegistrationDetails GetCandidateDetails(CandidateViewModelBase modelBase)
 {
     return(new RegistrationDetails
     {
         EmailAddress = modelBase.EmailAddress,
         Address = ApplicationConverter.GetAddress(modelBase.Address),
         DateOfBirth = modelBase.DateOfBirth,
         PhoneNumber = modelBase.PhoneNumber,
         FirstName = modelBase.FirstName,
         LastName = modelBase.LastName,
     });
 }
 private static ApplicationTemplate GetCandidateInformation(TraineeshipCandidateViewModel modelBase)
 {
     return(new ApplicationTemplate
     {
         Qualifications =
             modelBase.HasQualifications
                 ? ApplicationConverter.GetQualifications(modelBase.Qualifications)
                 : new List <Qualification>(),
         WorkExperience =
             modelBase.HasWorkExperience
                 ? ApplicationConverter.GetWorkExperiences(modelBase.WorkExperience)
                 : new List <WorkExperience>(),
     });
 }
 private static ApplicationTemplate GetCandidateInformation(ApprenticeshipCandidateViewModel modelBase)
 {
     return(new ApplicationTemplate
     {
         AboutYou = ApplicationConverter.GetAboutYou(modelBase.AboutYou),
         EducationHistory = ApplicationConverter.GetEducation(modelBase.Education),
         Qualifications =
             modelBase.HasQualifications
                 ? ApplicationConverter.GetQualifications(modelBase.Qualifications)
                 : new List <Qualification>(),
         WorkExperience =
             modelBase.HasWorkExperience
                 ? ApplicationConverter.GetWorkExperiences(modelBase.WorkExperience)
                 : new List <WorkExperience>(),
     });
 }
示例#6
0
        public BlockType(BlockService blockService, FieldTemplateService fieldTemplateService,
                         NamedServiceFactory <IBlockDataBuilder> blockDataBuilderFactory,
                         RouteInfoService routeInfoService)
        {
            Name        = "Block";
            Description = "Block data";
            Field(p => p.SystemId, type: typeof(IdGraphType)).Description("The block Id");

            Field <StringGraphType>(nameof(BlockModel.BlockType), "The block type",
                                    resolve: context =>
            {
                var block    = blockService.Get(context.Source.SystemId);
                var template = fieldTemplateService.Get <BlockFieldTemplate>(block.FieldTemplateSystemId);
                return(template.Id);
            });

            FieldAsync <StringGraphType>(nameof(BlockModel.ValueAsJSON), "Value as JSON string",
                                         arguments: new QueryArguments(
                                             new QueryArgument <GlobalInputType> {
                Name = "global", Description = "The global object"
            }
                                             ),
                                         resolve: async context =>
            {
                var block    = blockService.Get(context.Source.SystemId);
                var template = fieldTemplateService.Get <BlockFieldTemplate>(block.FieldTemplateSystemId);
                // Special treatment for scoped services https://graphql-dotnet.github.io/docs/getting-started/dependency-injection/#scoped-services-with-a-singleton-schema-lifetime
                // and make sure it is thread safe https://graphql-dotnet.github.io/docs/getting-started/dependency-injection/#thread-safety-with-scoped-services
                using var scope = context.RequestServices.CreateScope();
                var builder     = scope.ServiceProvider.GetNamedService <IBlockDataBuilder>(template.Id);
                if (builder == null)
                {
                    return(null);
                }
                var globalModel = context.GetArgument <GlobalModel>("global");
                routeInfoService.Setup(globalModel, context.Source.PageSystemId);
                var buildMethod = builder.GetType().GetMethod(nameof(IBlockDataBuilder <IViewModel> .BuildAsync));
                var value       = await(dynamic) buildMethod.Invoke(builder,
                                                                    new object[] { scope, new Web.Models.Blocks.BlockModel(block, block.Fields) });
                var jsonSerializerSettings = ApplicationConverter.JsonSerializerSettings();
                // jsonSerializerSettings.ReferenceLoopHandling = ReferenceLoopHandling.Ignore;
                return(JsonConvert.SerializeObject(value, jsonSerializerSettings));
            });
        }
        public ApprenticeshipApplicationViewModel Convert(ResolutionContext context)
        {
            var application = (ApprenticeshipApplicationDetail)context.SourceValue;

            var model = new ApprenticeshipApplicationViewModel
            {
                Candidate   = new ApprenticeshipCandidateViewModel().Resolve(application),
                DateUpdated = application.DateUpdated,
                VacancyId   = application.Vacancy.Id,
                Status      = application.Status
            };

            model.Candidate.AboutYou =
                ApplicationConverter.GetAboutYouViewModel(application.CandidateInformation.AboutYou);
            model.Candidate.Education =
                ApplicationConverter.GetEducationViewModel(application.CandidateInformation.EducationHistory);

            return(model);
        }
示例#8
0
 private static ApplicationTemplate GetCandidateInformation(TraineeshipCandidateViewModel modelBase)
 {
     return new ApplicationTemplate
     {
         AboutYou = ApplicationConverter.GetAboutYou(modelBase.AboutYou, modelBase.MonitoringInformation),
         Qualifications =
             modelBase.HasQualifications
                 ? ApplicationConverter.GetQualifications(modelBase.Qualifications)
                 : new List<Qualification>(),
         WorkExperience =
             modelBase.HasWorkExperience
                 ? ApplicationConverter.GetWorkExperiences(modelBase.WorkExperience)
                 : new List<WorkExperience>(),
         TrainingCourses = 
             modelBase.HasTrainingCourses
                 ? ApplicationConverter.GetTrainingCourses(modelBase.TrainingCourses)
                 : new List<TrainingCourse>(),
         DisabilityStatus = ApplicationConverter.GetDisabilityStatus(modelBase.MonitoringInformation.DisabilityStatus)
     };
 }
示例#9
0
        public TraineeshipApplicationViewModel Convert(ResolutionContext context)
        {
            var application = (TraineeshipApplicationDetail)context.SourceValue;

            var model = new TraineeshipApplicationViewModel
            {
                Candidate   = new TraineeshipCandidateViewModel().Resolve(application),
                DateUpdated = application.DateUpdated,
                VacancyId   = application.Vacancy.Id,
            };

            if (application.DateApplied.HasValue)
            {
                model.DateApplied = application.DateApplied.Value;
            }

            model.Candidate.AboutYou = ApplicationConverter.GetAboutYouViewModel(application.CandidateInformation.AboutYou);
            model.Candidate.MonitoringInformation = ApplicationConverter.GetMonitoringInformationViewModel(application.CandidateInformation.AboutYou, application.CandidateInformation.DisabilityStatus);

            return(model);
        }
示例#10
0
 public ApplicationService(IDataFacade facade)
 {
     _facade          = facade;
     _applicationConv = new ApplicationConverter();
     _userConv        = new UserConverter();
 }
示例#11
0
        public PageType(PageService pageService, BlockService blockService, UrlService urlService,
                        FieldTemplateService fieldTemplateService, RouteInfoService routeInfoService)
        {
            Name        = "Page";
            Description = "Page data";
            Field(p => p.SystemId, type: typeof(IdGraphType)).Description("The System Id");
            Field(p => p.Slug, nullable: true).Description("The slug")
            .Argument <GlobalInputType>("global")
            .Resolve(context =>
            {
                var globalModel = context.GetArgument <GlobalModel>("global");
                var page        = pageService.Get(context.Source.SystemId);
                return(urlService.GetUrl(page, new PageUrlArgs(globalModel.ChannelSystemId)));
            });

            Field <ListGraphType <BlockAreaType> >(nameof(PageModel.Areas), "Block areas",
                                                   resolve: context =>
            {
                var page = pageService.Get(context.Source.SystemId);
                return(page.Blocks.Items.Select(container =>
                                                new BlockAreaModel()
                {
                    Id = container.Id,
                    Blocks = blockService.Get(container.Items.Select(block => ((BlockItemLink)block).BlockSystemId))
                             .MapEnumerableTo <BlockModel>()
                             .Select(b => { b.PageSystemId = context.Source.SystemId; return b; }).ToList()
                }).ToList());
            });

            Field <StringGraphType>(nameof(PageModel.TemplateId), "Template id",
                                    resolve: context =>
            {
                var page     = pageService.Get(context.Source.SystemId);
                var template = fieldTemplateService.Get <PageFieldTemplate>(page.FieldTemplateSystemId);
                return(template.Id);
            });

            Field <StringGraphType>(nameof(PageModel.Name), "The page name",
                                    arguments: new QueryArguments(
                                        new QueryArgument <GlobalInputType> {
                Name = "global", Description = "The global object"
            }
                                        ),
                                    resolve: context =>
            {
                var page        = pageService.Get(context.Source.SystemId);
                var globalModel = context.GetArgument <GlobalModel>("global");
                return(page.GetEntityName(true, CultureInfo.GetCultureInfo(globalModel.CurrentCulture)) ?? page.Id ?? "general.NameIsMissing".AsAngularResourceString());
            });

            Field <PageInfoPageType>(nameof(PageModel.Children), description: "Sub pages",
                                     arguments: new QueryArguments(
                                         new QueryArgument <IntGraphType> {
                Name = "offset"
            },
                                         new QueryArgument <IntGraphType> {
                Name = "take"
            }
                                         ),
                                     resolve: context =>
                                     new PageInfoModel <Page, PageModel>(pageService.GetChildPages(context.Source.SystemId),
                                                                         context.GetArgument("offset", 0), context.GetArgument("take", 10)));

            FieldAsync <StringGraphType>(nameof(PageModel.ValueAsJSON), "Value as JSON string",
                                         arguments: new QueryArguments(
                                             new QueryArgument <GlobalInputType> {
                Name = "global", Description = "The global object"
            }
                                             ),
                                         resolve: async context =>
            {
                var page     = pageService.Get(context.Source.SystemId);
                var template = fieldTemplateService.Get <PageFieldTemplate>(page.FieldTemplateSystemId);
                // Special treatment for scoped services https://graphql-dotnet.github.io/docs/getting-started/dependency-injection/#scoped-services-with-a-singleton-schema-lifetime
                // and make sure it is thread safe https://graphql-dotnet.github.io/docs/getting-started/dependency-injection/#thread-safety-with-scoped-services
                using var scope = context.RequestServices.CreateScope();
                var builder     = scope.ServiceProvider.GetNamedService <IPageDataBuilder>(template.Id);
                if (builder == null)
                {
                    return(null);
                }
                var globalModel = context.GetArgument <GlobalModel>("global");
                routeInfoService.Setup(globalModel, context.Source.SystemId);
                var buildMethod = builder.GetType().GetMethod(nameof(IPageDataBuilder <IViewModel> .BuildAsync));
                var value       = await(dynamic) buildMethod.Invoke(builder,
                                                                    new object[] { scope, new Web.Models.Websites.PageModel(page, page.Fields) });
                // ((IDictionary<string, object>)value).Remove("blocks");
                var jsonSerializerSettings = ApplicationConverter.JsonSerializerSettings();
                return(JsonConvert.SerializeObject(value, jsonSerializerSettings));
            });
        }