public ActionResult SubmitApplication(int acquisitionid)
        {
            var login = ObjectBuilder.GetObject<ILoginUserPersistance>("LoginUserPersistance").GetByUserName(User.Identity.Name);
            if (null != login)
            {
                if (login.ApplicantId.HasValue)
                {
                    var applicant = ObjectBuilder.GetObject<IApplicantPersistence>("ApplicantPersistence").GetApplicant(login.ApplicantId.Value);

                    var message = string.Empty;
                    // check the criteria
                    if (!AtmHelper.ValidateHeightWeightBmi(Convert.ToDouble(applicant.Height), Convert.ToDouble(applicant.Weight), acquisitionid, applicant.GenderCd, out message))
                        return Json(new { OK = false, message = "Permohonan anda tidak berjaya dihantar." + message });

                    if (acquisitionid != 0)
                    {
                        // check based on acquisition
                        var acq = ObjectBuilder.GetObject<IAcquisitionPersistence>("AcquisitionPersistence").GetAcquisition(acquisitionid);
                        if (null != acq)
                        {
                            var acqtype = ObjectBuilder.GetObject<IReferencePersistence>("ReferencePersistence").GetAcquisitionType(acq.AcquisitionTypeCd.Value);
                            if (acqtype != null)
                            {
                                // perempuan
                                if (acq.AcquisitionTypeCd == 3)
                                    if (applicant.GenderCd == "L")
                                        return Json(new { OK = false, message = "Permohonan anda tidak berjaya dihantar kerana pengambilan ini untuk " + acqtype.AcquisitionTypeNm });
                                // lelaki
                                if (acq.AcquisitionTypeCd == 2)
                                    if (applicant.GenderCd == "P")
                                        return Json(new { OK = false, message = "Permohonan anda tidak berjaya dihantar kerana pengambilan ini untuk " + acqtype.AcquisitionTypeNm });

                                // Pegawai.. Check the selection indicator
                                if (acqtype.ServiceCd == "10")
                                {
                                    if (!applicant.SelectionTD.HasValue && !applicant.SelectionTL.HasValue && !applicant.SelectionTU.HasValue)
                                        return Json(new { OK = false, message = "Permohonan anda tidak berjaya dihantar. Sila pilih Keutamaan Perkhidmatan Pilihan" });
                                }
                            }

                        }

                        // mandatory checking on profile photo
                        var photo = ObjectBuilder.GetObject<IApplicantPersistence>("ApplicantPersistence").GetPhoto(applicant.ApplicantId);
                        if (photo == null)
                            return Json(new { OK = false, message = "Permohonan anda tidak berjaya dihantar. Sila muat naik gambar peribadi berukuran pasport (saiz tidak melebihi 500KB)." });

                        if (photo.Photo == null && string.IsNullOrWhiteSpace(photo.PhotoExt))
                            return Json(new { OK = false, message = "Permohonan anda tidak berjaya dihantar. Sila muat naik gambar peribadi berukuran pasport (saiz tidak melebihi 500KB)." });

                        // mandatory checking on basic information
                        var peribadipoint = 0.0m;
                        var edupoint = 0.0m;
                        var spopoint = 0.0m;
                        var saspoint = 0.0m;
                        var chpoint = 0.0m;
                        AtmHelper.Checklist(applicant.ApplicantId, acquisitionid, out peribadipoint, out edupoint, out spopoint, out saspoint, out chpoint);

                        if (peribadipoint != 100m)
                            return Json(new { OK = false, message = "Permohonan anda tidak berjaya dihantar. Maklumat peribadi tidak lengkap." });
                        if (edupoint != 100m)
                            return Json(new { OK = false, message = "Permohonan anda tidak berjaya dihantar. Maklumat akademik tidak lengkap." });
                        if (chpoint != 100m)
                            return Json(new { OK = false, message = "Permohonan anda tidak berjaya dihantar. Maklumat pengakuan tidak lengkap." });

                        // copy applicant to applicant submitted
                        var app = new ApplicantSubmitted()
                                  {
                                      AcquisitionId = acquisitionid,
                                      Height = applicant.Height,
                                      Weight = applicant.Weight,
                                      FullName = applicant.FullName,
                                      BMI = applicant.BMI,
                                      BirthCertNo = applicant.BirthCertNo,
                                      BirthCityCd = applicant.BirthCityCd,
                                      BirthCountryCd = applicant.BirthCountryCd,
                                      BirthPlace = applicant.BirthPlace,
                                      BirthStateCd = applicant.BirthStateCd,
                                      BirthDt = applicant.BirthDt.HasValue ? applicant.BirthDt.Value : applicant.BirthDt,
                                      CreatedBy = User.Identity.Name,
                                      CreatedDt = DateTime.Now,
                                      CorresponAddr1 = applicant.CorresponAddr1,
                                      CorresponAddr2 = applicant.CorresponAddr2,
                                      CorresponAddr3 = applicant.CorresponAddr3,
                                      CorresponAddrCityCd = applicant.CorresponAddrCityCd,
                                      CorresponAddrCountryCd = applicant.CorresponAddrCountryCd,
                                      CorresponAddrPostCd = applicant.CorresponAddrPostCd,
                                      CorresponAddrStateCd = applicant.CorresponAddrStateCd,
                                      GenderCd = applicant.GenderCd,
                                      NationalityCd = applicant.NationalityCd,
                                      NationalityCertNo = applicant.NationalityCertNo,
                                      MobilePhoneNo = applicant.MobilePhoneNo,
                                      HomePhoneNo = applicant.HomePhoneNo,
                                      DadNationalityCd = applicant.DadNationalityCd,
                                      DadName = applicant.DadName,
                                      DadICNo = applicant.DadICNo,
                                      DadOccupation = applicant.DadOccupation,
                                      DadPhoneNo = applicant.DadPhoneNo,
                                      DadSalary = applicant.DadSalary,
                                      MomName = applicant.MomName,
                                      MomNationalityCd = applicant.NationalityCd,
                                      MomICNo = applicant.MomICNo,
                                      MomOccupation = applicant.MomOccupation,
                                      MomSalary = applicant.MomSalary,
                                      MomPhoneNo = applicant.MomPhoneNo,
                                      MrtlStatusCd = applicant.MrtlStatusCd,
                                      ChildNo = applicant.ChildNo,
                                      ColorBlindInd = applicant.ColorBlindInd,
                                      EthnicCd = applicant.EthnicCd,
                                      RaceCd = applicant.RaceCd,
                                      ReligionCd = applicant.ReligionCd,
                                      Email = applicant.Email,
                                      GuardianName = applicant.GuardianName,
                                      GuardianNationalityCd = applicant.GuardianNationalityCd,
                                      GuardianOccupation = applicant.GuardianOccupation,
                                      GuardianICNo = applicant.GuardianICNo,
                                      GuardianSalary = applicant.GuardianSalary,
                                      GuardianPhoneNo = applicant.GuardianPhoneNo,
                                      NewICNo = applicant.NewICNo,
                                      ScholarshipContractStDate = applicant.ScholarshipContractStDate,
                                      CurrentOccupation = applicant.CurrentOccupation,
                                      SelectionTD = applicant.SelectionTD,
                                      SelectionTL = applicant.SelectionTL,
                                      SelectionTU = applicant.SelectionTU,
                                      ArmyServiceInd = applicant.ArmyServiceInd,
                                      ArmyServiceYrOfServ = applicant.ArmyServiceYrOfServ,
                                      ArmyServiceResignRemark = applicant.ArmyServiceResignRemark,
                                      ArmySelectionInd = applicant.ArmySelectionInd,
                                      ArmySelectionDt = applicant.ArmySelectionDt,
                                      ArmySelectionVenue = applicant.ArmySelectionVenue,
                                      ComputerICT = applicant.ComputerICT,
                                      ComputerMSExcel = applicant.ComputerMSExcel,
                                      ComputerMSPwrPoint = applicant.ComputerMSPwrPoint,
                                      ComputerMSWord = applicant.ComputerMSWord,
                                      ComputerOthers = applicant.ComputerOthers,
                                      PalapesArmyNo = applicant.PalapesArmyNo,
                                      PalapesInd = applicant.PalapesInd,
                                      PalapesInstitution = applicant.PalapesInstitution,
                                      PalapesRemark = applicant.PalapesRemark,
                                      PalapesServices = applicant.PalapesServices,
                                      PalapesTauliahEndDt = applicant.PalapesTauliahEndDt,
                                      PalapesYear = applicant.PalapesYear,
                                      CurrentOrganisation = applicant.CurrentOrganisation,
                                      CurrentSalary = applicant.CurrentSalary,
                                      ScholarshipInd = applicant.ScholarshipInd,
                                      ScholarshipBody = applicant.ScholarshipBody,
                                      ScholarshipBodyAddr = applicant.ScholarshipBodyAddr,
                                      ScholarshipNoOfYrContract = applicant.ScholarshipNoOfYrContract,
                                      EmployeeAggreeInd = applicant.EmployeeAggreeInd,
                                      CronicIlnessInd = applicant.CronicIlnessInd,
                                      CrimeInvolvement = applicant.CrimeInvolvement,
                                      DrugCaseInvolvement = applicant.DrugCaseInvolvement,
                                      NoOfSibling = applicant.NoOfSibling,
                                      NoTentera = applicant.NoTentera,
                                      SpectaclesUserInd = applicant.SpectaclesUserInd,
                                      OriginalPelepasanDocument = applicant.OriginalPelepasanDocument,
                                      PelepasanDocument = applicant.PelepasanDocument,
                                      MomNotApplicable = applicant.MomNotApplicable,
                                      DadNotApplicable = applicant.DadNotApplicable,
                                      GuardianNotApplicable = applicant.GuardianNotApplicable
                                  };

                        var idsubmitted = app.Save();
                        if (idsubmitted != 0)
                        {
                            app.ApplicantId = idsubmitted;

                            // get educations
                            var education = ObjectBuilder.GetObject<IApplicantPersistence>("ApplicantPersistence").GetEducation(applicant.ApplicantId);
                            if (null != education && education.Any())
                            {
                                foreach (var edu in education)
                                {
                                    if (!string.IsNullOrWhiteSpace(edu.OverallGrade) || edu.SKMLevel != 0 ||
                                        edu.ConfermentYr != 0)
                                    {
                                        var subedu = new ApplicantEducationSubmitted
                                                     {
                                                         ApplicantId = app.ApplicantId,
                                                         ConfermentYr = edu.ConfermentYr,
                                                         EduCertTitle = edu.EduCertTitle,
                                                         HighEduLevel = edu.HighEduLevel,
                                                         HighEduLevelCd = edu.HighEduLevelCd,
                                                         InstCd = edu.InstCd,
                                                         InstitutionName = edu.InstitutionName,
                                                         OverSeaInd = edu.OverSeaInd,
                                                         MajorMinorCd = edu.MajorMinorCd,
                                                         OverallGrade = edu.OverallGrade,
                                                         SKMLevel = edu.SKMLevel,
                                                         CreatedBy = User.Identity.Name,
                                                         CreatedDt = DateTime.Now,
                                                     };
                                        var apeduid = subedu.Save();
                                        foreach (var subject in edu.ApplicantEduSubjectCollection)
                                        {
                                            if (!string.IsNullOrWhiteSpace(subject.Grade) ||
                                                !string.IsNullOrWhiteSpace(subject.GradeCd))
                                            {
                                                var subsubject = new ApplicantEduSubjectSubmitted
                                                                 {
                                                                     GradeCd = !string.IsNullOrWhiteSpace(subject.GradeCd) ? subject.GradeCd.Trim() : subject.GradeCd,
                                                                     Grade = !string.IsNullOrWhiteSpace(subject.Grade) ? subject.Grade.Trim() : subject.Grade,
                                                                     ApplicantEduId = apeduid,
                                                                     CreatedBy = User.Identity.Name,
                                                                     CreatedDt = DateTime.Now,
                                                                     Subject = subject.Subject,
                                                                     SubjectCd = subject.SubjectCd,
                                                                 };
                                                subsubject.Save();
                                            }
                                        }
                                    }
                                }
                            }

                            // get sports
                            var sports = ObjectBuilder.GetObject<IApplicantPersistence>("ApplicantPersistence").GetSport(applicant.ApplicantId);
                            if (null != sports && sports.Any())
                            {
                                foreach (var sp in sports)
                                {
                                    if ((sp.SportAssocId.HasValue && sp.SportAssocId != 0) || !string.IsNullOrWhiteSpace(sp.Others))
                                    {
                                        var ssp = new ApplicantSportSubmitted
                                                  {
                                                      ApplicantId = app.ApplicantId,
                                                      CreatedBy = User.Identity.Name,
                                                      CreatedDt = DateTime.Now,
                                                      AchievementCd = sp.AchievementCd,
                                                      Year = sp.Year,
                                                      Others = sp.Others,
                                                      SportAssocId = sp.SportAssocId,
                                                  };
                                        ssp.Save();
                                    }
                                }
                            }

                            // get skills
                            var skills = ObjectBuilder.GetObject<IApplicantPersistence>("ApplicantPersistence").GetSkill(applicant.ApplicantId);
                            if (null != skills && skills.Any())
                            {
                                foreach (var sp in skills)
                                {
                                    var ssp = new ApplicantSkillSubmitted
                                                  {
                                                      ApplicantId = app.ApplicantId,
                                                      CreatedBy = User.Identity.Name,
                                                      CreatedDt = DateTime.Now,
                                                      LanguageSkillSpeak = sp.LanguageSkillSpeak,
                                                      LanguageSkillWrite = sp.LanguageSkillWrite,
                                                      Skill = sp.Skill,
                                                      AchievementCd = sp.AchievementCd,
                                                      Others = sp.Others,
                                                      SkillCatCd = sp.SkillCatCd,
                                                      SkillCd = sp.SkillCd,
                                                  };
                                    ssp.Save();
                                }
                            }

                            // get photo
                            if (photo.Photo != null && !string.IsNullOrWhiteSpace(photo.PhotoExt))
                            {
                                var sphoto = new ApplicantSubmittedPhoto()
                                             {
                                                 Photo = photo.Photo,
                                                 PhotoExt = photo.PhotoExt,
                                                 ApplicantId = app.ApplicantId,
                                                 CreatedBy = User.Identity.Name,
                                                 CreatedDate = DateTime.Now
                                             };

                                sphoto.Save();
                            }

                            var application = new Application()
                                              {
                                                  AcquisitionId = acquisitionid,
                                                  CreatedBy = User.Identity.Name,
                                                  CreatedDt = DateTime.Now,
                                                  ApplicantId = app.ApplicantId
                                              };
                            var id = application.Save();
                            if (id != 0)
                                return Json(new { OK = true, message = "Permohonan anda berjaya dihantar.", id = id });
                        }
                    }
                }
                return Json(new { OK = false, message = "Permohonan anda tidak berjaya dihantar kerana maklumat tidak lengkap." });
            }
            return Json(new { OK = false, message = "Permohonan anda tidak berjaya dihantar." });
        }
        public int UpdateEducation(ApplicantEducationSubmitted education)
        {
            using (var entities = new atmEntities())
            {
                var exist = (from a in entities.tblApplicantEduSubmitteds where a.ApplicantEduId == education.ApplicantEduId select a).SingleOrDefault();
                if (exist != null)
                {
                    exist.ApplicantId = education.ApplicantId;
                    exist.ConfermentYr = education.ConfermentYr;
                    exist.EduCertTitle = education.EduCertTitle;
                    exist.HighEduLevelCd = education.HighEduLevelCd;
                    exist.InstCd = education.InstCd;
                    exist.InstitutionName = education.InstitutionName;
                    exist.LastModifiedBy = education.LastModifiedBy;
                    exist.LastModifiedDt = DateTime.Now;
                    exist.MajorMinorCd = education.MajorMinorCd;
                    exist.OverSeaInd = education.OverSeaInd;
                    exist.OverallGrade = education.OverallGrade;
                    exist.SKMLevel = education.SKMLevel;

                    entities.SaveChanges();

                    return exist.ApplicantEduId;
                }
            }
            return 0;
        }
 public IEnumerable<ApplicantEducationSubmitted> GetEducation(int applicantid, int acquisitionid)
 {
     var list = new List<ApplicantEducationSubmitted>();
     using (var entities = new atmEntities())
     {
         var l = from a in entities.tblApplicantEduSubmitteds join b in entities.tblApplicantSubmiteds on a.ApplicantId equals b.ApplicantId where a.ApplicantId == applicantid && b.AcquisitionId == acquisitionid select a;
         if (l.Any())
         {
             foreach (var aes in l)
             {
                 var ed = new ApplicantEducationSubmitted
                 {
                     ApplicantEduId = aes.ApplicantEduId,
                     ApplicantId = aes.ApplicantId,
                     ConfermentYr = aes.ConfermentYr,
                     CreatedBy = aes.CreatedBy,
                     CreatedDt = aes.CreatedDt,
                     EduCertTitle = aes.EduCertTitle,
                     HighEduLevel = aes.tblREFHighEduLevel != null ? aes.tblREFHighEduLevel.HighestEduLevel : string.Empty,
                     HighEduLevelCd = !string.IsNullOrWhiteSpace(aes.HighEduLevelCd) ? aes.HighEduLevelCd.Trim() : aes.HighEduLevelCd,
                     InstCd = !string.IsNullOrWhiteSpace(aes.InstCd) ? aes.InstCd.Trim() : aes.InstCd,
                     InstitutionName = aes.InstitutionName,
                     LastModifiedBy = aes.LastModifiedBy,
                     LastModifiedDt = aes.LastModifiedDt,
                     MajorMinorCd = !string.IsNullOrWhiteSpace(aes.MajorMinorCd) ? aes.MajorMinorCd.Trim() : aes.MajorMinorCd,
                     OverSeaInd = aes.OverSeaInd,
                     OverallGrade = aes.OverallGrade,
                     SKMLevel = aes.SKMLevel
                 };
                 var subjects = from a in entities.tblApplicantEduSubjectSubmitteds where a.ApplicantEduId == ed.ApplicantEduId select a;
                 if (subjects.Any())
                 {
                     foreach (var s in subjects)
                     {
                         ed.ApplicantEduSubjectSubmittedCollection.Add(new ApplicantEduSubjectSubmitted
                         {
                             ApplicantEduId = s.ApplicantEduId,
                             CreatedBy = s.CreatedBy,
                             CreatedDt = s.CreatedDt,
                             EduSubjectId = s.EduSubjectId,
                             Grade = s.tblREFSubjectGrade.Grade,
                             GradeCd = !string.IsNullOrWhiteSpace(s.GradeCd) ? s.GradeCd.Trim() : s.GradeCd,
                             LastModifiedBy = s.LastModifiedBy,
                             LastModifiedDt = s.LastModifiedDt,
                             Subject = s.tblREFSubject.Subject,
                             SubjectCd = s.SubjectCd
                         });
                     }
                 }
                 list.Add(ed);
             }
         }
     }
     return list;
 }
        public int SaveEducation(ApplicantEducationSubmitted education)
        {
            using (var entities = new atmEntities())
            {
                var exist = (from a in entities.tblApplicantEduSubmitteds where a.ApplicantId == education.ApplicantId && a.HighEduLevelCd == education.HighEduLevelCd select a).SingleOrDefault();
                if (exist != null)
                {
                    education.ApplicantEduId = exist.ApplicantEduId;
                    return UpdateEducation(education);
                }
                var ed = new tblApplicantEduSubmitted
                {
                    ApplicantId = education.ApplicantId,
                    ConfermentYr = education.ConfermentYr,
                    CreatedBy = education.CreatedBy,
                    CreatedDt = education.CreatedDt,
                    EduCertTitle = education.EduCertTitle,
                    HighEduLevelCd = education.HighEduLevelCd,
                    InstCd = education.InstCd,
                    InstitutionName = education.InstitutionName,
                    MajorMinorCd = education.MajorMinorCd,
                    OverSeaInd = education.OverSeaInd,
                    OverallGrade = education.OverallGrade,
                    SKMLevel = education.SKMLevel
                };
                entities.tblApplicantEduSubmitteds.Add(ed);

                if (entities.SaveChanges() > 0)
                {
                    // save submitted subject
                    return ed.ApplicantEduId;
                }
            }
            return 0;
        }
Exemple #5
0
        public ApplicantModel(ApplicantSubmitted app, int acquisitionid)
        {
            ApplicantId = app.ApplicantId;
            NewIcNo = app.NewICNo;
            NoTentera = app.NoTentera;
            FullName = app.FullName;
            MrtlStatusCd = app.MrtlStatusCd;
            GenderCd = app.GenderCd;
            Height = app.Height;
            Weight = app.Weight;
            Bmi = app.BMI;
            NationalityCd = app.NationalityCd;
            NationalityCertNo = app.NationalityCertNo;
            BirthCertNo = app.BirthCertNo;
            ReligionCd = app.ReligionCd;
            RaceCd = app.RaceCd;
            EthnicCd = !string.IsNullOrWhiteSpace(app.EthnicCd) ? app.EthnicCd.Trim() : app.EthnicCd;
            BirthCountryCd = app.BirthCountryCd;
            BirthStateCd = app.BirthStateCd;
            BirthCityCd = !string.IsNullOrWhiteSpace(app.BirthCityCd) ? app.BirthCityCd.Trim() : app.BirthCityCd;
            BirthPlace = app.BirthPlace;
            BloodTypeCd = app.BloodTypeCd;
            SpectaclesUserInd = app.SpectaclesUserInd;
            ColorBlindInd = app.ColorBlindInd;
            ResidenceTypeInd = app.ResidenceTypeInd;
            CorresponAddr1 = app.CorresponAddr1;
            CorresponAddr2 = app.CorresponAddr2;
            CorresponAddr3 = app.CorresponAddr3;
            CorresponAddrPostCd = app.CorresponAddrPostCd;
            CorresponAddrCityCd = !string.IsNullOrWhiteSpace(app.CorresponAddrCityCd) ? app.CorresponAddrCityCd.Trim() : app.CorresponAddrCityCd;
            CorresponAddrStateCd = app.CorresponAddrStateCd;
            CorresponAddrCountryCd = app.CorresponAddrCountryCd;
            MobilePhoneNo = app.MobilePhoneNo;
            HomePhoneNo = app.HomePhoneNo;
            Email = app.Email;
            ChildNo = app.ChildNo;
            NoOfSibling = app.NoOfSibling;
            MomName = app.MomName;
            MomIcNo = app.MomICNo;
            MomNationalityCd = app.MomNationalityCd;
            MomOccupation = app.MomOccupation;
            MomSalary = app.MomSalary;
            MomPhoneNo = app.MomPhoneNo;
            DadName = app.DadName;
            DadIcNo = app.DadICNo;
            DadNationalityCd = app.DadNationalityCd;
            DadOccupation = app.DadOccupation;
            DadSalary = app.DadSalary;
            DadPhoneNo = app.DadPhoneNo;
            GuardianName = app.GuardianName;
            GuardianIcNo = app.GuardianICNo;
            GuardianNationalityCd = app.GuardianNationalityCd;
            GuardianOccupation = app.GuardianOccupation;
            GuardianSalary = app.GuardianSalary;
            GuardianPhoneNo = app.GuardianPhoneNo;
            FamilyHighestEduLevel = app.FamilyHighestEduLevel;
            CurrentOccupation = app.CurrentOccupation;
            CurrentOrganisation = app.CurrentOrganisation;
            CurrentSalary = app.CurrentSalary;
            PalapesInd = app.PalapesInd ?? false;
            PalapesYear = app.PalapesYear;
            PalapesArmyNo = app.PalapesArmyNo;
            PalapesInstitution = app.PalapesInstitution;
            PalapesRemark = app.PalapesRemark;
            PalapesTauliahEndDt = app.PalapesTauliahEndDt;
            ScholarshipInd = app.ScholarshipInd ?? false;
            ScholarshipBody = app.ScholarshipBody;
            ScholarshipBodyAddr = app.ScholarshipBodyAddr;
            ScholarshipNoOfYrContract = app.ScholarshipNoOfYrContract;
            ArmySelectionInd = app.ArmySelectionInd ?? false;
            ArmySelectionVenue = app.ArmySelectionVenue;
            ArmyServiceInd = app.ArmyServiceInd ?? false;
            ArmyServiceYrOfServ = app.ArmyServiceYrOfServ;
            ArmyServiceResignRemark = app.ArmyServiceResignRemark;
            SelectionTD = app.SelectionTD;
            SelectionTL = app.SelectionTL;
            SelectionTU = app.SelectionTU;
            ComputerMSWord = app.ComputerMSWord;
            ComputerMSExcel = app.ComputerMSExcel;
            ComputerMSPwrPoint = app.ComputerMSPwrPoint;
            ComputerICT = app.ComputerICT;
            ComputerOthers = app.ComputerOthers;
            CrimeInvolvement = app.CrimeInvolvement;
            DrugCaseInvolvement = app.DrugCaseInvolvement;
            CreatedBy = app.CreatedBy;
            LastModifiedBy = app.LastModifiedBy;
            CreatedDateTime = app.CreatedDt;
            LastModifiedDatetTime = app.LastModifiedDt;
            BirthDate = app.BirthDt;
            EmployeeAggreeInd = app.EmployeeAggreeInd ?? false;
            CronicIlnessInd = app.CronicIlnessInd;
            ScholarshipContractStDate = app.ScholarshipContractStDate;
            OriginalPelepasanDocument = app.OriginalPelepasanDocument;
            PelepasanDocument = app.PelepasanDocument;
            ArmySelectionDt = app.ArmySelectionDt;
            MomNotApplicable = app.MomNotApplicable ?? false;
            DadNotApplicable = app.DadNotApplicable ?? false;
            GuardianNotApplicable = app.GuardianNotApplicable ?? false;

            if (!string.IsNullOrWhiteSpace(NewIcNo))
            {
                var lastid = NewIcNo.Substring(NewIcNo.Length - 1);
                var checkgend = 0;
                int.TryParse(lastid, out checkgend);
                var even = new List<int>() { 0, 2, 4, 6, 8 };
                var odd = new List<int>() { 1, 3, 5, 7, 9 };
                if (string.IsNullOrWhiteSpace(app.GenderCd))
                {
                    if (even.Contains(checkgend)) GenderCd = "P";
                    if (odd.Contains(checkgend)) GenderCd = "L";
                }
            }

            if (string.IsNullOrWhiteSpace(app.NationalityCd))
                NationalityCd = "MYS";
            if (string.IsNullOrWhiteSpace(app.DadNationalityCd))
                DadNationalityCd = "MYS";
            if (string.IsNullOrWhiteSpace(app.MomNationalityCd))
                MomNationalityCd = "MYS";
            if (string.IsNullOrWhiteSpace(app.GuardianNationalityCd))
                GuardianNationalityCd = "MYS";
            if (string.IsNullOrWhiteSpace(BirthCountryCd))
                BirthCountryCd = "MYS";
            if (string.IsNullOrWhiteSpace(app.CorresponAddrCountryCd))
                CorresponAddrCountryCd = "MYS";

            if (string.IsNullOrWhiteSpace(BirthStateCd))
            {
                if (!string.IsNullOrWhiteSpace(NewIcNo))
                {
                    NewIcNo = NewIcNo.Trim();
                    if (NewIcNo.Length == 12)
                    {
                        var icbirthstatecode = NewIcNo.Substring(6, 2);
                        var birthstatecode = ObjectBuilder.GetObject<IReferencePersistence>("ReferencePersistence").GetStatesByBirthStateCode(icbirthstatecode);
                        if (null != birthstatecode)
                            BirthStateCd = birthstatecode.StateCd;
                    }
                }
            }

            if (!string.IsNullOrWhiteSpace(NewIcNo))
            {
                var yearstr = NewIcNo.Substring(0, 2);
                var monthstr = NewIcNo.Substring(2, 2);
                var daystr = NewIcNo.Substring(4, 2);
                var yearint = Convert.ToInt32(yearstr);
                if (yearint == 0) yearint = 2000;
                if (yearint < 10) yearint = 2000 + yearint;
                if (yearint > 10) yearint = 1900 + yearint;
                var bdate = new DateTime(yearint, Convert.ToInt16(monthstr), Convert.ToInt16(daystr));
                BirthDate = bdate;
                BirthDateString = string.Format("{0:dd/MM/yyyy}", bdate);
                DateTime zeroTime = DateTime.Now;
                var daterange = DateTime.Now - bdate;
                int years = (zeroTime + daterange).Year - 1;
                DateTime today = DateTime.Today;
                int months = zeroTime.Month - bdate.Month;

                Age = zeroTime.Year - bdate.Year;
                Month = months;
            }

            if (ApplicantId != 0)
            {
                // get educations
                var education = ObjectBuilder.GetObject<IApplicantSubmittedPersistence>("ApplicantSubmittedPersistence").GetEducation(ApplicantId, acquisitionid);
                if (null != education && education.Any())
                {
                    ApplicantEducationSubmitteds.Clear();
                    ApplicantEducationSubmitteds.AddRange(education.ToList());
                }

                // get skills
                var skills = ObjectBuilder.GetObject<IApplicantSubmittedPersistence>("ApplicantSubmittedPersistence").GetSkill(ApplicantId, acquisitionid);
                if (null != skills && skills.Any())
                {
                    SkillSubmitteds.AddRange(skills.ToList());

                    if (SkillSubmitteds.Count <= 2)
                        SkillSubmitteds.Add(new ApplicantSkillSubmitted() { SkillCd = "", SkillCatCd = "L", Skill = "" });
                }

                // get sports
                var sports = ObjectBuilder.GetObject<IApplicantSubmittedPersistence>("ApplicantSubmittedPersistence").GetSport(ApplicantId, acquisitionid);
                if (null != sports && sports.Any())
                {
                    SportSubmitteds.AddRange(sports.Where(a => a.SportAndAssociation != null && a.SportAndAssociation.SportAssociatType == "S").ToList().DistinctBy(a => a.SportAssocId));
                    KokoSubmitteds.AddRange(sports.Where(a => a.SportAndAssociation != null && a.SportAndAssociation.SportAssociatType == "A").ToList().DistinctBy(a => a.SportAssocId));
                    OtherSubmitteds.AddRange(sports.Where(a => !string.IsNullOrWhiteSpace(a.Others)));
                }
            }

            if (!string.IsNullOrWhiteSpace(app.ComputerOthers))
                ComputerOthersInd = true;

            if (acquisitionid != 0)
            {
                var acq = ObjectBuilder.GetObject<IAcquisitionPersistence>("AcquisitionPersistence").GetAcquisition(acquisitionid);
                if (acq != null && acq.AcquisitionTypeCd != 0)
                {
                    var selectededucation = new string[] { };
                    var refrepos = new ReferenceRepo();
                    //var acqtype = ObjectBuilder.GetObject<IReferencePersistence>("ReferencePersistence").GetAcquisitionType(acq.AcquisitionTypeCd);
                    if (null != acq.AcquisitionType)
                    {
                        // pegawai
                        if (acq.AcquisitionType.ServiceCd == "10")
                            selectededucation = new string[] { "14", "13", "25", "11", "08", "20" };
                        // td
                        if (acq.AcquisitionType.ServiceCd == "01")
                            selectededucation = new string[] { "14", "13", "25", "26", "11" };
                        // tl
                        if (acq.AcquisitionType.ServiceCd == "02")
                            selectededucation = new string[] { "14", "13", "25", "15", "26", "11" };
                        // tu
                        if (acq.AcquisitionType.ServiceCd == "03")
                            selectededucation = new string[] { "14", "13", "25", "26", "08", "11" };

                        var he = refrepos.GetHighEduLevels().Where(a => selectededucation.Contains(a.HighEduLevelCd));
                        if (he.Any())
                        {
                            he = he.OrderBy(a => a.IndexNo);
                            if (ApplicantEducationSubmitteds != null && ApplicantEducationSubmitteds.Any())
                            {
                                var ledu = new List<ApplicantEducationSubmitted>();
                                ledu.AddRange(ApplicantEducationSubmitteds);
                                foreach (var ed in ledu.ToList())
                                {
                                    if (ed.HighEduLevelCd == "14")
                                    {
                                        var selectedsubject = ed.ApplicantEduSubjectSubmittedCollection.ToList().RemoveAll(a => !string.IsNullOrEmpty(a.GradeCd));
                                        var subjects = refrepos.GetSubjects(ed.HighEduLevelCd);
                                        if (subjects.Any())
                                        {
                                            foreach (var s in subjects.Take(10))
                                            {
                                                // check already exist or not in subjects
                                                if (ed.ApplicantEduId != 0)
                                                {
                                                    var subbs = ObjectBuilder.GetObject<IApplicantSubmittedPersistence>("ApplicantSubmittedPersistence").GetSubject(ed.ApplicantEduId, s.SubjectCd);
                                                    if (null != subbs)
                                                    {
                                                        if (ed.ApplicantEduSubjectSubmittedCollection.All(a => a.SubjectCd != subbs.SubjectCd))
                                                            ed.ApplicantEduSubjectSubmittedCollection.Add(new ApplicantEduSubjectSubmitted() { SubjectCd = subbs.SubjectCd, Subject = subbs.Subject });
                                                    }
                                                    else
                                                    {
                                                        if (!ed.ApplicantEduSubjectSubmittedCollection.Any(a => subbs != null && a.SubjectCd == subbs.SubjectCd))
                                                            ed.ApplicantEduSubjectSubmittedCollection.Add(new ApplicantEduSubjectSubmitted() { SubjectCd = s.SubjectCd, Subject = s.SubjectDescription });
                                                    }
                                                }
                                                else
                                                {
                                                    if (ed.ApplicantEduSubjectSubmittedCollection.All(a => a.SubjectCd != s.SubjectCd))
                                                        ed.ApplicantEduSubjectSubmittedCollection.Add(new ApplicantEduSubjectSubmitted() { SubjectCd = s.SubjectCd, Subject = s.SubjectDescription });
                                                }

                                            }
                                        }

                                        var totalsubject = 16 - ed.ApplicantEduSubjectSubmittedCollection.Count();
                                        for (int i = 0; i < totalsubject; i++)
                                        {
                                            ed.ApplicantEduSubjectSubmittedCollection.Add(new ApplicantEduSubjectSubmitted());
                                        }
                                    }
                                    foreach (var h in he)
                                    {
                                        if (ledu.All(a => a.HighEduLevelCd != h.HighEduLevelCd))
                                        {
                                            var edu = new ApplicantEducationSubmitted() { HighEduLevelCd = h.HighEduLevelCd, HighEduLevel = h.HighestEduLevel };

                                            if (h.HighEduLevelCd == "14")
                                            {
                                                var subjects = refrepos.GetSubjects(h.HighEduLevelCd);
                                                if (subjects.Any())
                                                    foreach (var s in subjects.Take(10))
                                                        edu.ApplicantEduSubjectSubmittedCollection.Add(new ApplicantEduSubjectSubmitted() { SubjectCd = s.SubjectCd, Subject = s.SubjectDescription });

                                                var totalsubject = 16 - ed.ApplicantEduSubjectSubmittedCollection.Count();
                                                for (int i = 0; i < totalsubject; i++)
                                                {
                                                    edu.ApplicantEduSubjectSubmittedCollection.Add(new ApplicantEduSubjectSubmitted());
                                                }
                                            }

                                            ledu.Add(edu);
                                        }
                                    }
                                }
                                ApplicantEducationSubmitteds.Clear();
                                ApplicantEducationSubmitteds.AddRange(ledu.DistinctBy(a => a.HighEduLevelCd));
                            }
                            else
                            {
                                foreach (var h in he)
                                {
                                    var edu = new ApplicantEducationSubmitted() { HighEduLevelCd = h.HighEduLevelCd, HighEduLevel = h.HighestEduLevel };
                                    if (h.HighEduLevelCd == "14")
                                    {
                                        var subjects = refrepos.GetSubjects(h.HighEduLevelCd);
                                        if (subjects.Any())
                                            foreach (var s in subjects.Take(10))
                                                edu.ApplicantEduSubjectSubmittedCollection.Add(new ApplicantEduSubjectSubmitted() { SubjectCd = s.SubjectCd, Subject = s.SubjectDescription });

                                        for (int i = 0; i < 6; i++)
                                        {
                                            edu.ApplicantEduSubjectSubmittedCollection.Add(new ApplicantEduSubjectSubmitted());
                                        }
                                    }
                                    ApplicantEducationSubmitteds.Add(edu);
                                }
                            }
                        }

                        var scount = 0;
                        var kcount = 0;
                        if (SportSubmitteds != null)
                        {
                            scount = SportSubmitteds.Count();
                            if (scount == 0)
                                scount = 2;
                            else if (scount == 1)
                                scount = 1;
                            else
                                scount = 0;
                            for (int i = 0; i < scount; i++)
                            {
                                SportSubmitteds.Add(new ApplicantSportSubmitted());
                            }

                            kcount = KokoSubmitteds.Count();
                            if (kcount == 0)
                                kcount = 2;
                            else if (kcount == 1)
                                kcount = 1;
                            else
                                kcount = 0;
                            for (int i = 0; i < kcount; i++)
                            {
                                KokoSubmitteds.Add(new ApplicantSportSubmitted());
                            }
                        }

                        var skills = ObjectBuilder.GetObject<IReferencePersistence>("ReferencePersistence").GetSkills("L");
                        if (skills != null && skills.Any())
                        {
                            skills = skills.Take(2);
                            foreach (var s in skills)
                            {
                                if (!SkillSubmitteds.Any(a => a.SkillCd.Trim() == s.SkillCd.Trim()))
                                    SkillSubmitteds.Add(new ApplicantSkillSubmitted() { SkillCd = s.SkillCd.Trim(), SkillCatCd = "L", Skill = s.SkillDescription.Trim() });
                            }
                            if (SkillSubmitteds.Count <= 2)
                                SkillSubmitteds.Add(new ApplicantSkillSubmitted() { SkillCd = "", SkillCatCd = "L", Skill = "" });
                        }

                        if (!OtherSubmitteds.Any())
                        {
                            for (int i = 0; i < 2; i++)
                            {
                                OtherSubmitteds.Add(new ApplicantSportSubmitted());
                            }
                        }
                        else if (OtherSubmitteds.Count() == 1)
                        {
                            OtherSubmitteds.Add(new ApplicantSportSubmitted());
                        }
                    }
                }
            }
        }