public ActionResult SeaBased(List<SeaBasedViewModel> item, IEnumerable<long> remove_exp)
        {
            try
            {
                List<SeaBasedViewModel> modelAdd = new List<SeaBasedViewModel>();
                List<SeaBasedViewModel> modelUpdate = new List<SeaBasedViewModel>();

                int index = 0;
                foreach (var model in item)
                {
                    // GHOST INDEX ?
                    ModelState.Remove("[" + index + "]");
                    index++;
                    // CHECK IF UPDATE OR ADD
                    if (model.id == 0)
                    {
                        modelAdd.Add(model);
                    }
                    else
                    {
                        modelUpdate.Add(model);
                    }
                }

                if (ModelState.IsValid)
                {
                    SeaBasedCollectionViewModel model = new SeaBasedCollectionViewModel();
                    model.add = modelAdd;
                    model.update = modelUpdate;
                    model.remove = remove_exp;
                    model.applicant = UserHelpers.GetUser();

                    SetRequestURL(APIURL.APPLICANT_UPDATE_SEABASED, Method.POST);
                    request.AddBody(model);

                    var response = rest.Execute(request);

                    if (response.StatusCode == HttpStatusCode.OK)
                    {
                        Session["MESSAGE"] = new CustomException(Success.EXPERIENCE_UPDATE, MESSAGE_TYPE.SUCCESS);
                        return RedirectToAction("ExperienceInfo");
                    }
                    else
                    {
                        ModelState.AddModelError("", JsonConvert.DeserializeObject<CustomException>(response.Content).Message);
                    }
                }
            }
            catch (Exception ex)
            {
                ModelState.AddModelError("", ex);
            }

            SetRequestURL(APIURL.SEABASED_SELECT_LISTS, Method.GET);
            var res = rest.Execute(request);

            if (res.StatusCode == HttpStatusCode.OK)
            {
                ViewBag.ActiveExperience = "active";
                ViewBag.LandBased = "";
                ViewBag.SeaBased = "active";
                SelectCollectionsViewModel data = JsonConvert.DeserializeObject<SelectCollectionsViewModel>(res.Content);

                foreach (var i in item)
                {
                    i.lstSpecializations = new System.Web.Mvc.SelectList(data.Specializations, "id", "description", i.specialization);
                    i.lstCurrencies = new System.Web.Mvc.SelectList(data.Currencies, "id", "description", i.salary_currency);
                    i.lstVesselTypes = new System.Web.Mvc.SelectList(data.Vessels, "id", "description", i.vessel_type);
                    i.lstTradeAreas = new System.Web.Mvc.SelectList(data.TradeAreas, "id", "description", i.trade_area);
                    i.lstEngineTypes = new System.Web.Mvc.SelectList(data.EngineTypes, "id", "description", i.engine_type);
                }

                return View(item);
            }
            else
            {
                return CustomMessage(res.Content);
            }
        }
        public ActionResult LandBased(List<LandBasedViewModel> item, IEnumerable<long> remove_exp)
        {
            try
            {
                List<LandBasedViewModel> modelAdd = new List<LandBasedViewModel>();
                List<LandBasedViewModel> modelUpdate = new List<LandBasedViewModel>();

                int index = 0;
                foreach (var model in item)
                {
                    if (model.currently_employed == true)
                    {
                        model.employment_to = null;
                        ModelState.Remove("[" + index + "].employment_to");
                    }

                    ModelState.Remove("[" + index + "]");

                    index++;

                    // CHECK IF UPDATE OR ADD
                    if (model.id == 0)
                    {
                        modelAdd.Add(model);
                    }
                    else
                    {
                        modelUpdate.Add(model);
                    }
                }

                if (ModelState.IsValid)
                {
                    LandBasedCollectionViewModel model = new LandBasedCollectionViewModel();
                    model.add = modelAdd;
                    model.update = modelUpdate;
                    model.remove = remove_exp;
                    model.applicant = UserHelpers.GetUser();

                    SetRequestURL(APIURL.APPLICANT_UPDATE_LANDBASED, Method.POST);
                    request.AddBody(model);

                    var response = rest.Execute(request);

                    if (response.StatusCode == HttpStatusCode.OK)
                    {
                        Applicant user = JsonConvert.DeserializeObject<Applicant>(response.Content);

                        Session["MESSAGE"] = new CustomException(Success.EXPERIENCE_UPDATE, MESSAGE_TYPE.SUCCESS);
                        if (user.registration_step == Constants.REG_STEP_SEA)
                        {
                            return RedirectToAction("SeaBased");
                        }
                        else
                        {
                            return RedirectToAction("ExperienceInfo");
                        }
                    }
                    else
                    {
                        ModelState.AddModelError("", JsonConvert.DeserializeObject<CustomException>(response.Content).Message);
                    }
                }
            }
            catch (Exception ex)
            {
                ModelState.AddModelError("", ex);
            }

            SetRequestURL(APIURL.LANDBASED_SELECT_LISTS, Method.GET);
            var res = rest.Execute(request);

            if (res.StatusCode == HttpStatusCode.OK)
            {
                ViewBag.ActiveExperience = "active";
                ViewBag.LandBased = "active";
                ViewBag.SeaBased = "";
                SelectCollectionsViewModel data = JsonConvert.DeserializeObject<SelectCollectionsViewModel>(res.Content);

                foreach (var i in item)
                {
                    i.lstCountries = new SelectList(data.Countries, "id", "name", i.country);
                    i.lstCurrencies = new SelectList(data.Currencies, "id", "description", i.salary_currency);
                    i.lstSpecializations = new SelectList(data.Specializations, "id", "description", i.specialization);
                }

                return View(item);
            }
            else
            {
                return CustomMessage(res.Content);
            }
        }
 public ActionResult CustomMessage(CustomException message)
 {
     return View("CustomMessage", message);
 }
        public ActionResult Education(List<EducationViewModel> item, IEnumerable<long> remove_educ)
        {
            try
            {
                List<EducationViewModel> modelAdd = new List<EducationViewModel>();
                List<EducationViewModel> modelUpdate = new List<EducationViewModel>();

                int index = 0;
                foreach (var model in item)
                {
                    if (model.field_study > 0)
                    {
                        ModelState.Remove("[" + index + "].other_field_study");
                    }

                    if (model.field_study == 0)
                    {
                        ModelState["[" + index + "].field_study"].Errors.Clear();
                    }

                    ModelState.Remove("[" + index + "]");

                    index++;

                    // CHECK IF UPDATE OR ADD
                    if (model.educid == 0)
                    {
                        modelAdd.Add(model);
                    }
                    else
                    {
                        modelUpdate.Add(model);
                    }
                }

                if (ModelState.IsValid)
                {
                    EducationCollectionViewModel model = new EducationCollectionViewModel();
                    model.add = modelAdd;
                    model.update = modelUpdate;
                    model.remove = remove_educ;
                    model.applicant = UserHelpers.GetUser();

                    SetRequestURL(APIURL.APPLICANT_UPDATE_EDUCATION, Method.POST);
                    request.AddBody(model);

                    var response = rest.Execute(request);

                    if (response.StatusCode == HttpStatusCode.OK)
                    {
                        Applicant user = JsonConvert.DeserializeObject<Applicant>(response.Content);

                        Session["MESSAGE"] = new CustomException(Success.EDUCATION_UPDATE, MESSAGE_TYPE.SUCCESS);
                        if (user.registration_step != Constants.REG_STEP_LAND || user.registration_step != Constants.REG_STEP_SEA)
                        {
                            return RedirectToAction("LandBased");
                        }
                        else
                        {
                            return RedirectToAction("EducationInfo");
                        }
                    }
                    else
                    {
                        ModelState.AddModelError("", JsonConvert.DeserializeObject<CustomException>(response.Content).Message);
                    }
                }
            }
            catch (Exception ex)
            {
                ModelState.AddModelError("", ex);
            }

            SetRequestURL(APIURL.EDUCATION_METADATA, Method.GET);
            request.AddParameter("id", UserHelpers.GetUser().id);
            var res = rest.Execute(request);

            if (res.StatusCode == HttpStatusCode.OK)
            {
                EducationMetadata data = JsonConvert.DeserializeObject<EducationMetadata>(res.Content);
                #region label
                if (data.count == 0)
                {
                    ViewBag.EducationLabel = "Highest Educational Level";
                }
                else
                {
                    ViewBag.EducationLabel = "Education";
                }

                ViewBag.ActiveEducation = "active";
                #endregion

                foreach (var i in item)
                {
                    i.lstFields = new SelectList(data.fields, "id", "description", i.field_study);
                    i.lstLevels = new SelectList(data.levels, "id", "description", i.level);
                }

                return View(item);
            }
            else
            {
                return CustomMessage(res.Content);
            }
        }
 public void SetMessage(string message, MESSAGE_TYPE type)
 {
     Session["MESSAGE"] = new CustomException(message, type);
 }