public override void SetValueAfterCreate(string value, ApplicantResponse applicant, ApiHttpClient apiClient)
        {
            if (IsCustomFieldAvailable(apiClient) && IsCustomFieldValueValid(value, apiClient))
            {
                var customField = GetCustomField(apiClient);
                var parameter = new CustomFieldValueParameter
                {
                    CustomField = customField.Name
                };

                switch (customField.Type)
                {
                    case CustomFieldResponse.CustomFieldType.TextMultiLine:
                    case CustomFieldResponse.CustomFieldType.TextSingleLine:
                    case CustomFieldResponse.CustomFieldType.DropdownList:
                        parameter.Value = value;
                        break;
                    case CustomFieldResponse.CustomFieldType.CheckBox:
                        parameter.Value = value.Is("X").ToString().ToLower();
                        break;
                    case CustomFieldResponse.CustomFieldType.CheckboxList:
                        parameter.Values = (value ?? "").Split(',').Select(x => x.Trim()).Where(x => x.HasValue());
                        break;
                    case CustomFieldResponse.CustomFieldType.Date:
                        var date = ParseDate(value);
                        parameter.Value = date.HasValue ? date.Value.ToString(CultureInfo.InvariantCulture) : null;
                        break;
                }

                new ApplicantCustomFieldPostRequest(applicant.Id, parameter).LoadResult(apiClient);
            }
        }
 public override void SetValueAfterCreate(string value, ApplicantResponse applicant, ApiHttpClient apiClient)
 {
     if (value.HasValue())
     {
         new ApplicantHistoryPutRequest(applicant.Id, BuildHistoryParameter(value)).LoadResult(apiClient);
     }
 }
Esempio n. 3
0
        internal async Task <ApplicantIdDocs> CreateApplicantIdDocs(ApplicantResponse applicant)
        {
            var idDocs          = _fixture.Create <ApplicantIdDocs>();
            var applicantIdDocs = await Client.SetApplicantIdDocsAsync(applicant.Id, idDocs);

            return(applicantIdDocs);
        }
Esempio n. 4
0
 public ApplicantCompleteness(ApplicantResponse applicantResponse, IEnumerable <ApplicantDocumentResponse> documents, IEnumerable <string> jobProfiles, IEnumerable <ApplicantActivityResponse> activities)
 {
     CalculatePersonalInformation(applicantResponse);
     CalculateFiles(documents);
     CalculateJobProfiles(jobProfiles);
     CalculateActivities(activities);
 }
Esempio n. 5
0
        public override void SetValueAfterCreate(string value, ApplicantResponse applicant, ApiHttpClient apiClient)
        {
            if (IsCustomFieldAvailable(apiClient) && IsCustomFieldValueValid(value, apiClient))
            {
                var customField = GetCustomField(apiClient);
                var parameter   = new CustomFieldValueParameter
                {
                    CustomField = customField.Name
                };

                switch (customField.Type)
                {
                case CustomFieldResponse.CustomFieldType.TextMultiLine:
                case CustomFieldResponse.CustomFieldType.TextSingleLine:
                case CustomFieldResponse.CustomFieldType.DropdownList:
                    parameter.Value = value;
                    break;

                case CustomFieldResponse.CustomFieldType.CheckBox:
                    parameter.Value = value.Is("X").ToString().ToLower();
                    break;

                case CustomFieldResponse.CustomFieldType.CheckboxList:
                    parameter.Values = (value ?? "").Split(',').Select(x => x.Trim()).Where(x => x.HasValue());
                    break;

                case CustomFieldResponse.CustomFieldType.Date:
                    var date = ParseDate(value);
                    parameter.Value = date.HasValue ? date.Value.ToString(CultureInfo.InvariantCulture) : null;
                    break;
                }

                new ApplicantCustomFieldPostRequest(applicant.Id, parameter).LoadResult(apiClient);
            }
        }
 public override void SetValueAfterCreate(string value, ApplicantResponse applicant, ApiHttpClient apiClient)
 {
     if (value.HasValue())
     {
         new ApplicantHistoryPutRequest(applicant.Id, BuildHistoryParameter(value)).LoadResult(apiClient);
     }
 }
 private ActionResult SetAuthCookieOrRedirectToErrorPage(ApplicantResponse applicantResponse, ActionResult onSuccessRedirectTo)
 {
     if (applicantResponse != null)
     {
         FormsAuthentication.SetAuthCookie(applicantResponse.Id.ToString(CultureInfo.InvariantCulture), false);
         return(onSuccessRedirectTo);
     }
     return(RedirectToAction("Login", "Account"));
 }
 public ApplicantParameter(ApplicantResponse applicantResponse)
 {
     // just copy the value of each property
     foreach (
         var property in typeof(ApplicantParameter).GetProperties(BindingFlags.Instance | BindingFlags.Public))
     {
         property.SetValue(this,
                           typeof(ApplicantResponse).GetProperty(property.Name).GetValue(applicantResponse));
     }
 }
 public override void SetValueAfterCreate(string value, ApplicantResponse applicant, ApiHttpClient apiClient)
 {
     if (IsKnowledgeAvailable(apiClient) && IsKnowledgeLevelAvailable(value, apiClient))
     {
         new ApplicantKnowledgePutRequest(applicant.Id, new ApplicantKnowledgeParameter
         {
             Knowledge = SubType,
             Level = value
         }).LoadResult(apiClient);
     }
 }
Esempio n. 10
0
        public async Task <ActionResult <Envelope <ApplicantResponse> > > RemoveApplicant(int applicantId)
        {
            var removeApplicant = await _applicantService.RemoveApplicant(applicantId);

            if (removeApplicant.IsSuccess)
            {
                return(Ok(Envelope.Ok(ApplicantResponse.Map(removeApplicant.Value))));
            }

            return(BadRequest(Envelope.Error(removeApplicant.Error)));
        }
 public override void SetValueAfterCreate(string value, ApplicantResponse applicant, ApiHttpClient apiClient)
 {
     if (IsKnowledgeAvailable(apiClient) && IsKnowledgeLevelAvailable(value, apiClient))
     {
         new ApplicantKnowledgePutRequest(applicant.Id, new ApplicantKnowledgeParameter
         {
             Knowledge = SubType,
             Level     = value
         }).LoadResult(apiClient);
     }
 }
 private void SetFile(string filePath, ApplicantResponse applicant, ApiHttpClient apiClient)
 {
     var bytes = File.ReadAllBytes(filePath);
     new ApplicantDocumentPutRequest(applicant.Id, new ApplicantDocumentParameter
     {
         Content = bytes,
         Name = Path.GetFileName(filePath),
         FileExtension = Path.GetExtension(filePath),
         Type = SubType,
         IsPublic = false
     }).LoadResult(apiClient);
 }
 public async Task AddPhoto(ApiHttpClient apiClient, ApplicantResponse applicantResponse, HttpPostedFileBase file)
 {
     using (var reader = new BinaryReader(file.InputStream))
     {
         var document = new ApplicantDocumentParameter
         {
             Content       = reader.ReadBytes(file.ContentLength),
             FileExtension = (Path.GetExtension(file.FileName) ?? "").Trim('.')
         };
         await new ApplicantPhotoPostRequest(applicantResponse.Id, document).LoadResult(apiClient);
     }
 }
 public override void SetValueAfterCreate(string value, ApplicantResponse applicant, ApiHttpClient apiClient)
 {
     if (value.HasValue() && File.Exists(value))
     {
         var bytes = File.ReadAllBytes(value);
         new ApplicantCvPutRequest(applicant.Id, new ApplicantCvParameter
         {
             Content = bytes,
             FileExtension = Path.GetExtension(value)
         }).LoadResult(apiClient);
     }
 }
Esempio n. 15
0
 public override void SetValueAfterCreate(string value, ApplicantResponse applicant, ApiHttpClient apiClient)
 {
     if (value.HasValue() && File.Exists(value))
     {
         var bytes = File.ReadAllBytes(value);
         new ApplicantPhotoPutRequest(applicant.Id, new ApplicantPhotoParameter
         {
             Content       = bytes,
             FileExtension = Path.GetExtension(value)
         }).LoadResult(apiClient);
     }
 }
Esempio n. 16
0
        public async Task <ActionResult <Envelope <ApplicantResponse> > > ModifyApplicant(int applicantId,
                                                                                          [FromBody] ApplicantDto dto)
        {
            var modifyApplicant = await _applicantService.ModifyApplicant(applicantId, dto);

            if (modifyApplicant.IsSuccess)
            {
                return(Ok(Envelope.Ok(ApplicantResponse.Map(modifyApplicant.Value))));
            }

            return(BadRequest(Envelope.Error(modifyApplicant.Error)));
        }
Esempio n. 17
0
 private void CalculatePersonalInformation(ApplicantResponse applicantResponse)
 {
     PersonalInformation  = 100;
     PersonalInformation -= applicantResponse.FirstName.IsNoE() ? 15 : 0;
     PersonalInformation -= applicantResponse.LastName.IsNoE() ? 15 : 0;
     PersonalInformation -= applicantResponse.Email.IsNoE() ? 15 : 0;
     PersonalInformation -= applicantResponse.Phone.IsNoE() && applicantResponse.MobilePhone.IsNoE() ? 15 : 0;
     PersonalInformation -= !applicantResponse.Gender.HasValue ? 15 : 0;
     PersonalInformation -= !applicantResponse.BirthDate.HasValue ? 10 : 0;
     PersonalInformation -= applicantResponse.Street.IsNoE() ? 5 : 0;
     PersonalInformation -= applicantResponse.ZipCode.IsNoE() ? 5 : 0;
     PersonalInformation -= applicantResponse.City.IsNoE() ? 5 : 0;
 }
        private void SetFile(string filePath, ApplicantResponse applicant, ApiHttpClient apiClient)
        {
            var bytes = File.ReadAllBytes(filePath);

            new ApplicantDocumentPutRequest(applicant.Id, new ApplicantDocumentParameter
            {
                Content       = bytes,
                Name          = Path.GetFileName(filePath),
                FileExtension = Path.GetExtension(filePath),
                Type          = SubType,
                IsPublic      = false
            }).LoadResult(apiClient);
        }
Esempio n. 19
0
        public async Task <ActionResult <Envelope <ApplicantResponse> > > RegisterApplicant([FromBody] ApplicantDto dto)
        {
            var registerApplicant = await _applicantService.RegisterApplicant(dto);

            if (registerApplicant.IsSuccess)
            {
                return(CreatedAtAction(nameof(GetApplicant),
                                       new { applicantId = registerApplicant.Value.Id },
                                       Envelope.Ok(ApplicantResponse.Map(registerApplicant.Value))));
            }

            return(BadRequest(Envelope.Error(registerApplicant.Error)));
        }
 public override void SetValueAfterCreate(string value, ApplicantResponse applicant, ApiHttpClient apiClient)
 {
     if (value != null && value.HasValue() && IsDocumentTypeAvailable(apiClient))
     {
         if (File.Exists(value))
         {
             SetFile(value, applicant, apiClient);
         }
         else if (Directory.Exists(value))
         {
             foreach (var file in Directory.GetFiles(value))
                 SetFile(file, applicant, apiClient);
         }
     }
 }
Esempio n. 21
0
        public ApplicantResponse GetMultiple(SearchRequest request)
        {
            var response = new ApplicantResponse()
            {
                Applicants = new List <ApplicantInfo>()
            };

            var query = GetAll <Applicant>(includeProperties: $"{nameof(User)},");

            var selected = _mapper.ProjectTo <ApplicantInfo>(query)
                           .Applyfilters(request).ToList();

            response.Applicants.AddRange(selected);
            response.MaxApplicants = GetCount <Applicant>();
            return(response);
        }
 public override void SetValueAfterCreate(string value, ApplicantResponse applicant, ApiHttpClient apiClient)
 {
     if (value != null && value.HasValue() && IsDocumentTypeAvailable(apiClient))
     {
         if (File.Exists(value))
         {
             SetFile(value, applicant, apiClient);
         }
         else if (Directory.Exists(value))
         {
             foreach (var file in Directory.GetFiles(value))
             {
                 SetFile(file, applicant, apiClient);
             }
         }
     }
 }
Esempio n. 23
0
        public ApplicantParameter(ApplicantResponse applicantResponse)
        {
            FirstName = applicantResponse.FirstName;
            LastName  = applicantResponse.LastName;
            Gender    = applicantResponse.Gender;
            Email     = applicantResponse.Email;

            TitleBeforeName            = applicantResponse.TitleBeforeName;
            TitleAfterName             = applicantResponse.TitleAfterName;
            BirthDate                  = applicantResponse.BirthDate;
            Street                     = applicantResponse.Street;
            City                       = applicantResponse.City;
            ZipCode                    = applicantResponse.ZipCode;
            Country                    = applicantResponse.Country;
            Nationality                = applicantResponse.Nationality;
            Phone                      = applicantResponse.Phone;
            MobilePhone                = applicantResponse.MobilePhone;
            IsActive                   = applicantResponse.IsActive;
            EnableNewsletter           = applicantResponse.EnableNewsletter;
            EnableMatchingJobsAutoMail = applicantResponse.EnableMatchingJobsAutoMail;
        }
Esempio n. 24
0
        public async Task <IActionResult> CreateAsync([FromBody] CreateApplicantRequest applicantRequest)
        {
            var isValid = await _countryLookupService.IsValidCountry(applicantRequest.CountryOfOrigin);

            if (!isValid)
            {
                return(BadRequest("Invalid country name"));
            }

            var isExists = await _applicantService.GetApplicantByEmailAsync(applicantRequest.EmailAddress);

            if (isExists)
            {
                return(BadRequest("User with this email already exists"));
            }

            //TODO: externlize conversions, using AutoMapper
            var applicant = new Applicant
            {
                Id              = Guid.NewGuid(),
                Name            = applicantRequest.Name,
                FamilyName      = applicantRequest.FamilyName,
                Address         = applicantRequest.Address,
                CountryOfOrigin = applicantRequest.CountryOfOrigin,
                EmailAddress    = applicantRequest.EmailAddress,
                Age             = applicantRequest.Age,
                Hired           = applicantRequest.Hired
            };

            await _applicantService.CreateApplicantAsync(applicant);

            var baseUri     = $"{HttpContext.Request.Scheme}://{HttpContext.Request.Host.ToUriComponent()}";
            var locationUri = baseUri + "/" + ApiRoutes.Applicants.Get.Replace("{ApplicantId}", applicant.Id.ToString());

            var response = new ApplicantResponse {
                Id = applicant.Id
            };

            return(Created(locationUri, response));
        }
Esempio n. 25
0
 public IndexViewModel(ApplicantResponse applicantResponse, IEnumerable <ApplicantDocumentResponse> documents, IEnumerable <string> jobProfiles, IEnumerable <ApplicantActivityResponse> activities)
 {
     ApplicantResponse = applicantResponse;
     Completeness      = new ApplicantCompleteness(applicantResponse, documents, jobProfiles, activities);
 }
Esempio n. 26
0
        public async Task <ApplicantResponse> UpdatePersonalInformation(ApiHttpClient apiClient, ApplicantResponse applicantResponse, PersonalInformationViewModel model)
        {
            //set the remaining applicant data by updating it
            var updateParameter = new ApplicantParameter(applicantResponse)
            {
                BirthDate       = model.BirthDate,
                City            = model.City,
                Country         = model.Country,
                Nationality     = model.Nationality,
                Phone           = model.Phone,
                Street          = model.Street,
                TitleBeforeName = model.TitleBeforeName,
                TitleAfterName  = model.TitleAfterName,
                ZipCode         = model.ZipCode,
                Email           = model.Email
            };

            return(await new ApplicantPostRequest(applicantResponse.Id, updateParameter).LoadResult(apiClient));
        }
 public virtual void SetValueAfterCreate([CanBeNull] string value, [NotNull] ApplicantResponse applicant,
                                         [NotNull] ApiHttpClient apiClient)
 {
 }
Esempio n. 28
0
        public virtual PersonalInformationViewModel Prepare([NotNull] MandatorResponse mandatorResponse, [CanBeNull] ApplicantResponse applicantResponse)
        {
            AllowEmptyGender          = mandatorResponse.PortalSettings.AllowEmptyGender;
            AvailableTitlesBeforeName = from x in mandatorResponse.TitlesBeforeName
                                        select new SelectListItem
            {
                Value = x.Name,
                Text  = x.Name
            };
            AvailableTitlesAfterName = from x in mandatorResponse.TitlesAfterName
                                       select new SelectListItem
            {
                Value = x.Name,
                Text  = x.Name
            };
            AvailableCountries = from x in mandatorResponse.Countries
                                 select new SelectListItem
            {
                Value = x,
                Text  = x
            };
            AvailableNationalities = from x in mandatorResponse.Countries
                                     select new SelectListItem
            {
                Value = x,
                Text  = x
            };

            if (applicantResponse != null)
            {
                AutoMapper.Mapper.DynamicMap(applicantResponse, this);
            }

            return(this);
        }
Esempio n. 29
0
        public async Task <ApplicantResponse> LinkProfileToApplicant([NotNull] ApiHttpClient apiClient, [NotNull] MandatorResponse mandatorResponse, [CanBeNull] ApplicantResponse loggedInApplicantResponse, [NotNull] IProfile profile, ThirdParty thirdParty)
        {
            if (profile == null)
            {
                throw new ArgumentNullException("profile");
            }

            ApplicantResponse applicant;

            try
            {
                applicant = loggedInApplicantResponse ?? await new ApplicantGetRequest(profile.Id, thirdParty).LoadResult(apiClient);
            }
            catch
            {
                applicant = null;
            }

            //we don't have an applicant that is logged in or has a matching profile
            //so, lets create a new applicant
            if (applicant == null)
            {
                //this should never happen, because we catch this case earlier, before calling this method
                //this is just to make absolutely sure ;)
                if (await IsEmailAddressAlreadyInUse(apiClient, mandatorResponse, profile.Email))
                {
                    return(null);
                }

                bool?gender = null;
                if (profile.Gender == Gender.Female)
                {
                    gender = false;
                }
                else if (profile.Gender == Gender.Male)
                {
                    gender = true;
                }

                var parameter = new ApplicantParameter
                {
                    Email     = profile.Email,
                    FirstName = profile.FirstName,
                    LastName  = profile.LastName,
                    Gender    = gender
                };
                applicant = await new ApplicantPutRequest(parameter).LoadResult(apiClient);
            }

            //now link the profile
            var linkRequest = thirdParty == ThirdParty.Xing
                                  ? new LinkXingRequest(applicant.Id, profile.Id, profile.Url)
                                  : (HttpRequestMessage <ApplicantResponse>) new LinkLinkedInRequest(applicant.Id, profile.Id, profile.Url);

            applicant = await linkRequest.LoadResult(apiClient);

            return(applicant);
        }