public IActionResult Summary(ApplicantDataViewModel model) { if (!ModelState.IsValid) { return(View("Index", model)); } // obliczenie punktow int age = AgeHelper.CountAge(model.BirthDate.Value); int pointForAge; if (model.SpouseExist == false) { pointForAge = AgePointsCalculator.CountPointsForAge(age); } else { pointForAge = AgePointsCalculator.CountPointsForAgeWithSpouse(age); } int pointForEducation; if (model.SpouseExist == false) { pointForEducation = EducationPointsCalculator.CountPointsForEducation(model.EducationLevel); } else { pointForEducation = EducationPointsCalculator.CountPointsForEducationWithSpouse(model.EducationLevel); } LanguagePoints primaryAplicantFirstLangPoints; if (model.TypeOfFirstExam.HasValue) { var firstExamType = LanguagePoints.IdentifyingTheTypeOfExam(model.TypeOfFirstExam.Value); primaryAplicantFirstLangPoints = new LanguagePoints(firstExamType, model.SpeakingPoints, model.WritingPoints, model.ReadingPoints, model.ListeningPoints); } else { primaryAplicantFirstLangPoints = new LanguagePoints(); } int pointsForSpeaking; int pointsForWriting; int pointsForReading; int pointsForListening; int pointsForLanguage; if (model.SpouseExist == false) { pointsForSpeaking = LanguagePointsCalculator.LanguagePointsCalculatorWithoutSpouse(primaryAplicantFirstLangPoints.CLBSpeakingPoints); pointsForWriting = LanguagePointsCalculator.LanguagePointsCalculatorWithoutSpouse(primaryAplicantFirstLangPoints.CLBWritingPoints); pointsForReading = LanguagePointsCalculator.LanguagePointsCalculatorWithoutSpouse(primaryAplicantFirstLangPoints.CLBReadingPoints); pointsForListening = LanguagePointsCalculator.LanguagePointsCalculatorWithoutSpouse(primaryAplicantFirstLangPoints.CLBListeningPoints); } else { pointsForSpeaking = LanguagePointsCalculator.LanguagePointsCalculatorWithSpouse(primaryAplicantFirstLangPoints.CLBSpeakingPoints); pointsForWriting = LanguagePointsCalculator.LanguagePointsCalculatorWithSpouse(primaryAplicantFirstLangPoints.CLBWritingPoints); pointsForReading = LanguagePointsCalculator.LanguagePointsCalculatorWithSpouse(primaryAplicantFirstLangPoints.CLBReadingPoints); pointsForListening = LanguagePointsCalculator.LanguagePointsCalculatorWithSpouse(primaryAplicantFirstLangPoints.CLBListeningPoints); } pointsForLanguage = pointsForSpeaking + pointsForWriting + pointsForReading + pointsForListening; var secondExamType = LanguagePoints.IdentifyingTheTypeOfExam(model.TypeOfSecondExam); LanguagePoints primaryAplicantSecondLangPoints = new LanguagePoints(secondExamType, model.SpeakingPointsSecondLanguage, model.WritingPointsSecondLanguage, model.ReadingPointsSecondLanguage, model.ListeningPointsSecondLanguage); int pointsForSecondLangSpeaking; int pointsForSecondLangWriting;; int pointsForSecondLangReading; int pointsForSecondLangListening; int pointsForSecondLanguage; pointsForSecondLangSpeaking = SecondLanguagePointsCalculator.SecondLangPointsCalculator(primaryAplicantSecondLangPoints.CLBSpeakingPoints); pointsForSecondLangWriting = SecondLanguagePointsCalculator.SecondLangPointsCalculator(primaryAplicantSecondLangPoints.CLBWritingPoints); pointsForSecondLangReading = SecondLanguagePointsCalculator.SecondLangPointsCalculator(primaryAplicantSecondLangPoints.CLBReadingPoints); pointsForSecondLangListening = SecondLanguagePointsCalculator.SecondLangPointsCalculator(primaryAplicantSecondLangPoints.CLBListeningPoints); pointsForSecondLanguage = pointsForSecondLangSpeaking + pointsForSecondLangWriting + pointsForSecondLangReading + pointsForSecondLangListening; int pointsForExperience; if (model.SpouseExist == false) { pointsForExperience = ExperiencePointsCalculator.CountPointsForExperienceWithoutSpouse(model.CanadianExperience); } else { pointsForExperience = ExperiencePointsCalculator.CountPointsForExperienceWithSpouse(model.CanadianExperience); } int sectionA = pointForAge + pointForEducation + pointsForLanguage + pointsForSecondLanguage + pointsForExperience; int pointsForSpouseEducation; pointsForSpouseEducation = EducationPointsCalculator.CountPointsForSpouseEducation(model.SpouseEducationLevel); LanguagePoints spouseFirstLangPoints; if (model.TypeOfSpouseExam.HasValue) { var spouseExamType = LanguagePoints.IdentifyingTheTypeOfExam(model.TypeOfSpouseExam.Value); spouseFirstLangPoints = new LanguagePoints(spouseExamType, model.SpouseSpeakingPoints, model.SpouseWritingPoints, model.SpouseReadingPoints, model.SpouseListeningPoints); } else { spouseFirstLangPoints = new LanguagePoints(); } int pointsForSpouseSpeaking; int pointsForSpouseWriting; int pointsForSpouseReading; int pointsForSpouseListening; int pointsForSpouseLanguage; pointsForSpouseSpeaking = LanguagePointsCalculator.CalculatorOfSpouseLanguagePoints(spouseFirstLangPoints.CLBSpeakingPoints); pointsForSpouseWriting = LanguagePointsCalculator.CalculatorOfSpouseLanguagePoints(spouseFirstLangPoints.CLBWritingPoints); pointsForSpouseReading = LanguagePointsCalculator.CalculatorOfSpouseLanguagePoints(spouseFirstLangPoints.CLBReadingPoints); pointsForSpouseListening = LanguagePointsCalculator.CalculatorOfSpouseLanguagePoints(spouseFirstLangPoints.CLBListeningPoints); pointsForSpouseLanguage = pointsForSpouseSpeaking + pointsForSpouseWriting + pointsForSpouseReading + pointsForSpouseListening; int pointsForSpouseExperience; pointsForSpouseExperience = ExperiencePointsCalculator.CountPointsForSpouseExperience(model.SpouseCanadianExperience); int sectionB = pointsForSpouseEducation + pointsForSpouseLanguage + pointsForSpouseExperience; int sectionC; sectionC = SkillTransferabilityFactorsCalculator.CalculateSkillTransferabilityFactorsPoints(primaryAplicantFirstLangPoints, model.EducationLevel, model.CanadianExperience, model.ExperienceOutsideCanada); int sectionD; int canadianFamilyMemberPoints = AdditionalPointsCalculator.GiveAdditionalPoints(model.CanadianFamilyMember); int canadianEducationPoints = AdditionalPointsCalculator.CanadianEducationPoints(model.CanadianEducation); int canadianArrangedEmploymentPoints = AdditionalPointsCalculator.CalculatePointsForArrangementEmployment(model.CanadianArrangedEmployment); int canadianProvincialOrTerritorialNominationPoints = AdditionalPointsCalculator.GiveAdditionalPointsForProvincialOrTerritorialNomination(model.CanadianProvincialOrTerritorialNomination); int additionalLanguagePoints = 0; if (primaryAplicantFirstLangPoints.LanguageExamType == LanguagePoints.LanguageExamTypes.TEF) { additionalLanguagePoints = AdditionalPointsCalculator.GiveAdditionalPointsForLanguages(primaryAplicantFirstLangPoints, primaryAplicantSecondLangPoints); } sectionD = canadianFamilyMemberPoints + canadianEducationPoints + canadianArrangedEmploymentPoints + canadianProvincialOrTerritorialNominationPoints + additionalLanguagePoints; int totalPointsForExpressEntry; totalPointsForExpressEntry = sectionA + sectionB + sectionC + sectionD; PointsSummaryViewModel points = new PointsSummaryViewModel(); points.PointsForAge = pointForAge; points.PointsForEducation = pointForEducation; points.PointsForFirstLanguage = pointsForLanguage; points.PointsForSecondLanguage = pointsForSecondLanguage; points.PointsForCanadianExperience = pointsForExperience; points.PointsInSectionA = sectionA; points.PointsForSpouseEducation = pointsForSpouseEducation; points.PointsForSpouseLanguageExam = pointsForSpouseLanguage; points.PointsForSpouseCanadianExperience = pointsForSpouseExperience; points.PointsInSectionB = sectionB; points.PointsInSectionC = sectionC; points.PointsInSectionD = sectionD; points.TotalPointsForExpressEntry = totalPointsForExpressEntry; points.LastExpressEntryStats = _expressEntryStats; return(View(points)); }
public void HaveCorrectPoints() { this.Given("Given filled calculation form") .When(_ => _.WhenICalculateMyPoints()) .Then(_ => _.ThenPointsShouldBeEqualTo(), "Then points should be equal to <ExpectedPointsSummary>") .WithExamples(new ExampleTable("ApplicantData", "ExpectedPointsSummary") { { ApplicantData = new ApplicantDataViewModel { BirthDate = new DateTime(1987, 8, 1), SpouseExist = false, EducationLevel = 7, // Master's TypeOfFirstExam = 1, // IELTS SpeakingPoints = 7.0, ListeningPoints = 8.0, ReadingPoints = 7.5, WritingPoints = 6.5, CanadianExperience = 0, ExperienceOutsideCanada = 3 }, ExpectedPointsSummary = new PointsSummaryViewModel { PointsForAge = 94, PointsForEducation = 135, PointsForFirstLanguage = 116, PointsInSectionA = 345, PointsInSectionB = 0, PointsInSectionC = 50, PointsInSectionD = 0, TotalPointsForExpressEntry = 395 } }, { ApplicantData = new ApplicantDataViewModel { BirthDate = new DateTime(1992, 8, 1), SpouseExist = true, EducationLevel = 5, // Bachelor's TypeOfFirstExam = 1, // IELTS SpeakingPoints = 6.5, ListeningPoints = 8.0, ReadingPoints = 6.5, WritingPoints = 6.0, CanadianExperience = 1, ExperienceOutsideCanada = 2, TypeOfSpouseExam = 1, // IELTS SpouseSpeakingPoints = 5, SpouseListeningPoints = 5, SpouseReadingPoints = 5, SpouseWritingPoints = 5, SpouseEducationLevel = 2, // High School SpouseCanadianExperience = 0, }, ExpectedPointsSummary = new PointsSummaryViewModel { PointsForAge = 100, PointsForEducation = 112, PointsForFirstLanguage = 89, PointsForCanadianExperience = 35, PointsInSectionA = 336, PointsForSpouseEducation = 2, PointsForSpouseLanguageExam = 4, PointsInSectionB = 6, PointsInSectionC = 52, PointsInSectionD = 0, TotalPointsForExpressEntry = 394, } }, { // state when spouse doesn't exist but spouse data has been filled // can occur if user checks spouse existance, fill spouse data and then uncheck spouse existance ApplicantData = new ApplicantDataViewModel { BirthDate = new DateTime(1987, 8, 1), SpouseExist = false, EducationLevel = 7, // Master's TypeOfFirstExam = 1, // IELTS SpeakingPoints = 7.0, ListeningPoints = 8.0, ReadingPoints = 7.5, WritingPoints = 6.5, CanadianExperience = 0, ExperienceOutsideCanada = 3, TypeOfSpouseExam = 1, // IELTS SpouseSpeakingPoints = 5, SpouseListeningPoints = 5, SpouseReadingPoints = 5, SpouseWritingPoints = 5, SpouseEducationLevel = 7, // Master's SpouseCanadianExperience = 3, }, ExpectedPointsSummary = new PointsSummaryViewModel { PointsForAge = 94, PointsForEducation = 135, PointsForFirstLanguage = 116, PointsInSectionA = 345, PointsInSectionB = 0, PointsInSectionC = 50, PointsInSectionD = 0, TotalPointsForExpressEntry = 395 } }, { ApplicantData = new ApplicantDataViewModel { BirthDate = new DateTime(1987, 8, 1), SpouseExist = false, EducationLevel = 7, // Master's TypeOfFirstExam = 1, // IELTS SpeakingPoints = 7.0, ListeningPoints = 8.0, ReadingPoints = 7.5, WritingPoints = 6.5, CanadianExperience = 0, ExperienceOutsideCanada = 3, CanadianProvincialOrTerritorialNomination = true, CanadianFamilyMember = true }, ExpectedPointsSummary = new PointsSummaryViewModel { PointsForAge = 94, PointsForEducation = 135, PointsForFirstLanguage = 116, PointsInSectionA = 345, PointsInSectionB = 0, PointsInSectionC = 50, PointsInSectionD = 615, TotalPointsForExpressEntry = 1010 } }, { ApplicantData = new ApplicantDataViewModel { BirthDate = new DateTime(1987, 8, 1), SpouseExist = false, EducationLevel = 7, // Master's TypeOfFirstExam = 1, // IELTS SpeakingPoints = 7.0, ListeningPoints = 8.0, ReadingPoints = 7.5, WritingPoints = 6.5, CanadianExperience = 0, ExperienceOutsideCanada = 3, CanadianProvincialOrTerritorialNomination = true, CanadianFamilyMember = true, CanadianArrangedEmployment = 1 }, ExpectedPointsSummary = new PointsSummaryViewModel { PointsForAge = 94, PointsForEducation = 135, PointsForFirstLanguage = 116, PointsInSectionA = 345, PointsInSectionB = 0, PointsInSectionC = 50, PointsInSectionD = 815, TotalPointsForExpressEntry = 1210 } }, { ApplicantData = new ApplicantDataViewModel { BirthDate = new DateTime(1987, 8, 1), SpouseExist = false, EducationLevel = 7, // Master's TypeOfFirstExam = 1, // IELTS SpeakingPoints = 7.0, ListeningPoints = 8.0, ReadingPoints = 7.5, WritingPoints = 6.5, CanadianEducation = 3, CanadianExperience = 0, ExperienceOutsideCanada = 3, CanadianProvincialOrTerritorialNomination = true, CanadianFamilyMember = true, CanadianArrangedEmployment = 1 }, ExpectedPointsSummary = new PointsSummaryViewModel { PointsForAge = 94, PointsForEducation = 135, PointsForFirstLanguage = 116, PointsInSectionA = 345, PointsInSectionB = 0, PointsInSectionC = 50, PointsInSectionD = 845, TotalPointsForExpressEntry = 1240 } } }) .BDDfy(); }
public IActionResult Index() { ApplicantDataViewModel model = new ApplicantDataViewModel(); return(View(model)); }
public IActionResult Summary(ApplicantDataViewModel model) { if (!ModelState.IsValid) { return(View("Index", model)); } // save model to temp data // by clicking browser's back button user expects to see form populated with data // so user can quickly change one/more form params and calculate again // need to serialize model because TempData can't serialize complex objects TempData[APPLICANT_DATA_MODEL_KEY] = JsonConvert.SerializeObject(model); // obliczenie punktow int age = AgeHelper.CountAge(model.BirthDate.Value); int pointForAge; if (model.SpouseExist == false) { pointForAge = AgePointsCalculator.CountPointsForAge(age); } else { pointForAge = AgePointsCalculator.CountPointsForAgeWithSpouse(age); } int pointForEducation; if (model.SpouseExist == false) { pointForEducation = EducationPointsCalculator.CountPointsForEducation(model.EducationLevel); } else { pointForEducation = EducationPointsCalculator.CountPointsForEducationWithSpouse(model.EducationLevel); } LanguagePoints primaryAplicantFirstLangPoints; if (model.TypeOfFirstExam.HasValue) { var firstExamType = LanguagePoints.IdentifyingTheTypeOfExam(model.TypeOfFirstExam.Value); primaryAplicantFirstLangPoints = new LanguagePoints(firstExamType, model.SpeakingPoints, model.WritingPoints, model.ReadingPoints, model.ListeningPoints); } else { primaryAplicantFirstLangPoints = new LanguagePoints(); } int pointsForSpeaking; int pointsForWriting; int pointsForReading; int pointsForListening; int pointsForLanguage; if (model.SpouseExist == false) { pointsForSpeaking = LanguagePointsCalculator.LanguagePointsCalculatorWithoutSpouse(primaryAplicantFirstLangPoints.CLBSpeakingPoints); pointsForWriting = LanguagePointsCalculator.LanguagePointsCalculatorWithoutSpouse(primaryAplicantFirstLangPoints.CLBWritingPoints); pointsForReading = LanguagePointsCalculator.LanguagePointsCalculatorWithoutSpouse(primaryAplicantFirstLangPoints.CLBReadingPoints); pointsForListening = LanguagePointsCalculator.LanguagePointsCalculatorWithoutSpouse(primaryAplicantFirstLangPoints.CLBListeningPoints); } else { pointsForSpeaking = LanguagePointsCalculator.LanguagePointsCalculatorWithSpouse(primaryAplicantFirstLangPoints.CLBSpeakingPoints); pointsForWriting = LanguagePointsCalculator.LanguagePointsCalculatorWithSpouse(primaryAplicantFirstLangPoints.CLBWritingPoints); pointsForReading = LanguagePointsCalculator.LanguagePointsCalculatorWithSpouse(primaryAplicantFirstLangPoints.CLBReadingPoints); pointsForListening = LanguagePointsCalculator.LanguagePointsCalculatorWithSpouse(primaryAplicantFirstLangPoints.CLBListeningPoints); } pointsForLanguage = pointsForSpeaking + pointsForWriting + pointsForReading + pointsForListening; var secondExamType = LanguagePoints.IdentifyingTheTypeOfExam(model.TypeOfSecondExam); LanguagePoints primaryAplicantSecondLangPoints = new LanguagePoints(secondExamType, model.SpeakingPointsSecondLanguage, model.WritingPointsSecondLanguage, model.ReadingPointsSecondLanguage, model.ListeningPointsSecondLanguage); int pointsForSecondLangSpeaking; int pointsForSecondLangWriting;; int pointsForSecondLangReading; int pointsForSecondLangListening; int pointsForSecondLanguage; pointsForSecondLangSpeaking = SecondLanguagePointsCalculator.SecondLangPointsCalculator(primaryAplicantSecondLangPoints.CLBSpeakingPoints); pointsForSecondLangWriting = SecondLanguagePointsCalculator.SecondLangPointsCalculator(primaryAplicantSecondLangPoints.CLBWritingPoints); pointsForSecondLangReading = SecondLanguagePointsCalculator.SecondLangPointsCalculator(primaryAplicantSecondLangPoints.CLBReadingPoints); pointsForSecondLangListening = SecondLanguagePointsCalculator.SecondLangPointsCalculator(primaryAplicantSecondLangPoints.CLBListeningPoints); pointsForSecondLanguage = pointsForSecondLangSpeaking + pointsForSecondLangWriting + pointsForSecondLangReading + pointsForSecondLangListening; int pointsForExperience; if (model.SpouseExist == false) { pointsForExperience = ExperiencePointsCalculator.CountPointsForExperienceWithoutSpouse(model.CanadianExperience); } else { pointsForExperience = ExperiencePointsCalculator.CountPointsForExperienceWithSpouse(model.CanadianExperience); } int sectionA = pointForAge + pointForEducation + pointsForLanguage + pointsForSecondLanguage + pointsForExperience; int pointsForSpouseEducation = 0; int pointsForSpouseSpeaking = 0; int pointsForSpouseWriting = 0; int pointsForSpouseReading = 0; int pointsForSpouseListening = 0; int pointsForSpouseLanguage = 0; int pointsForSpouseExperience = 0; if (model.SpouseExist) { pointsForSpouseEducation = EducationPointsCalculator.CountPointsForSpouseEducation(model.SpouseEducationLevel); LanguagePoints spouseFirstLangPoints; if (model.TypeOfSpouseExam.HasValue) { var spouseExamType = LanguagePoints.IdentifyingTheTypeOfExam(model.TypeOfSpouseExam.Value); spouseFirstLangPoints = new LanguagePoints(spouseExamType, model.SpouseSpeakingPoints, model.SpouseWritingPoints, model.SpouseReadingPoints, model.SpouseListeningPoints); } else { spouseFirstLangPoints = new LanguagePoints(); } pointsForSpouseSpeaking = LanguagePointsCalculator.CalculatorOfSpouseLanguagePoints(spouseFirstLangPoints.CLBSpeakingPoints); pointsForSpouseWriting = LanguagePointsCalculator.CalculatorOfSpouseLanguagePoints(spouseFirstLangPoints.CLBWritingPoints); pointsForSpouseReading = LanguagePointsCalculator.CalculatorOfSpouseLanguagePoints(spouseFirstLangPoints.CLBReadingPoints); pointsForSpouseListening = LanguagePointsCalculator.CalculatorOfSpouseLanguagePoints(spouseFirstLangPoints.CLBListeningPoints); pointsForSpouseLanguage = pointsForSpouseSpeaking + pointsForSpouseWriting + pointsForSpouseReading + pointsForSpouseListening; pointsForSpouseExperience = ExperiencePointsCalculator.CountPointsForSpouseExperience(model.SpouseCanadianExperience); } int sectionB = pointsForSpouseEducation + pointsForSpouseLanguage + pointsForSpouseExperience; int sectionC; sectionC = SkillTransferabilityFactorsCalculator.CalculateSkillTransferabilityFactorsPoints(primaryAplicantFirstLangPoints, model.EducationLevel, model.CanadianExperience, model.ExperienceOutsideCanada); int sectionD; int canadianFamilyMemberPoints = AdditionalPointsCalculator.GiveAdditionalPoints(model.CanadianFamilyMember); int canadianEducationPoints = AdditionalPointsCalculator.CanadianEducationPoints(model.CanadianEducation); int canadianArrangedEmploymentPoints = AdditionalPointsCalculator.CalculatePointsForArrangementEmployment(model.CanadianArrangedEmployment); int canadianProvincialOrTerritorialNominationPoints = AdditionalPointsCalculator.GiveAdditionalPointsForProvincialOrTerritorialNomination(model.CanadianProvincialOrTerritorialNomination); int additionalLanguagePoints = 0; if (primaryAplicantFirstLangPoints.LanguageExamType == LanguagePoints.LanguageExamTypes.TEF || primaryAplicantFirstLangPoints.LanguageExamType == LanguagePoints.LanguageExamTypes.TCF) { additionalLanguagePoints = AdditionalPointsCalculator.GiveAdditionalPointsForLanguages(primaryAplicantFirstLangPoints, primaryAplicantSecondLangPoints); } sectionD = canadianFamilyMemberPoints + canadianEducationPoints + canadianArrangedEmploymentPoints + canadianProvincialOrTerritorialNominationPoints + additionalLanguagePoints; int totalPointsForExpressEntry; totalPointsForExpressEntry = sectionA + sectionB + sectionC + sectionD; PointsSummaryViewModel points = new PointsSummaryViewModel(); points.PointsForAge = pointForAge; points.PointsForEducation = pointForEducation; points.PointsForFirstLanguage = pointsForLanguage; points.PointsForSecondLanguage = pointsForSecondLanguage; points.PointsForCanadianExperience = pointsForExperience; points.PointsInSectionA = sectionA; points.PointsForSpouseEducation = pointsForSpouseEducation; points.PointsForSpouseLanguageExam = pointsForSpouseLanguage; points.PointsForSpouseCanadianExperience = pointsForSpouseExperience; points.PointsInSectionB = sectionB; points.PointsInSectionC = sectionC; points.PointsInSectionD = sectionD; points.TotalPointsForExpressEntry = totalPointsForExpressEntry; points.LastExpressEntryStats = _expressEntryStats; return(View(points)); }