//
 // GET: /Manage_Ship_Departure/Edit/5
 public ActionResult Edit(int id = 0)
 {
     if (Session["login_status"] != null)
     {
         int[] z = (int[])Session["function_id"];
         if (z.Contains(28))
         {
             Ship_Departure ship_departure = db.Ship_Departure.Find(id);
             if (ship_departure == null)
             {
                 return HttpNotFound();
             }
             var country_id = 0;
             var country_name = "";
             var geography_id = 0;
             var geography_name = "";
             var state_name = "";
             var day_code = "";
             var geography = from sa in db.Ship_Departure
                             join s in db.States on sa.state_id equals s.state_id
                             join c in db.Countries on s.country_id equals c.country_id
                             join g in db.Geographies on c.geography_id equals g.geography_id
                             join d in db.Days on sa.day_id equals d.day_id
                             where s.state_id == ship_departure.state_id && d.day_id == ship_departure.day_id
                             select new { c.country_id, c.country_name, g.geography_id, g.geography_name, s.state_name, s.state_id, d.day_code };
             foreach (var item in geography)
             {
                 country_id = item.country_id;
                 country_name = item.country_name;
                 geography_id = item.geography_id;
                 geography_name = item.geography_name;
                 state_name = item.state_name;
                 day_code = item.day_code;
             }
             ViewBag.ships = new HomeController().Ship();
             ViewBag.geography_id = new HomeController().Geography();
             ViewBag.day = new HomeController().Day();
             ViewBag.status = new HomeController().Status();
             ViewBag.country_id = new SelectList(geography, "country_id", "country_name");
             ViewBag.state_id = new SelectList(geography, "state_id", "state_name");
             TempData["id"] = ship_departure.ship_departure_id;
             TempData["created_date"] = ship_departure.created_date;
             var result = CustomSplit(day_code, new string[] { "", "", "" });
             var year_value = result[0];
             var month_value = result[1];
             var day_value = result[2];
             var month_number = Regex.Match(month_value, @"\d+").Value;
             var day_number = Regex.Match(day_value, @"\d+").Value;
             var day = year_value + "-" + month_number + "-" + day_number;
             Ship_DepartureModel ship_departureModel = new Ship_DepartureModel();
             ship_departureModel.shipp_id = ship_departure.shipp_id;
             ship_departureModel.geography_id = geography_id;
             ship_departureModel.country_id = country_id;
             ship_departureModel.state_id = ship_departure.state_id;
             ship_departureModel.state_id = ship_departure.day_id;
             ship_departureModel.status_id = ship_departure.status_id;
             ship_departureModel.ship_departure_id = ship_departure.ship_departure_id;
             ship_departureModel.day_code = day;
             return View(ship_departureModel);
         }
         else
         {
             return RedirectToAction("../Home/Dashboard");
         }
     }
     else
     {
         return RedirectToAction("../Home");
     }
 }
 public ActionResult Create(Ship_DepartureModel ship_departureModel)
 {
     if (Session["login_status"] != null)
     {
         int[] z = (int[])Session["function_id"];
         if (z.Contains(28))
         {
             Ship_Departure ship_departure = new Ship_Departure();
             DateTime shipp_departure_date = Convert.ToDateTime(ship_departureModel.day_code);
             var year = shipp_departure_date.Year;
             var month = shipp_departure_date.Month;
             var day = shipp_departure_date.Day;
             var day_2 = "D" + day.ToString("00");
             var month_2 = "M" + month.ToString("00");
             var day_code = year + month_2 + day_2;
             var ship_code = "";
             var state_name = "";
             var day_id = 0;
             var ship_code1 = from s in db.Ships
                              where s.ship_id == ship_departureModel.shipp_id
                              select s.ship_code_1;
             foreach (var item in ship_code1)
             {
                 ship_code = item;
             }
             var geography_code1 = from s in db.States
                                   where s.state_id == ship_departureModel.state_id
                                   select s.state_name;
             foreach (var item in geography_code1)
             {
                 state_name = item;
             }
             var day_code1 = from d in db.Days
                             where d.day_code == day_code
                             select d.day_id;
             foreach (var item in day_code1)
             {
                 day_id = item;
             }
             if (ModelState.IsValid)
             {
                 var is_exist = (from sa in db.Ship_Departure where sa.shipp_id == ship_departureModel.shipp_id && sa.day_id == day_id select sa).Count();
                 if (is_exist > 0)
                 {
                     TempData["errorMessage"] = "This Ship Departure Already Exist";
                 }
                 else
                 {
                     ship_departure.shipp_id = ship_departureModel.shipp_id;
                     ship_departure.state_id = ship_departureModel.state_id;
                     ship_departure.day_id = day_id;
                     ship_departure.ship_departure_code = ship_code + " " + state_name + " " + ship_departureModel.day_code;
                     ship_departure.status_id = 1;
                     ship_departure.starting_date = Convert.ToDateTime(ship_departureModel.day_code);
                     ship_departure.created_date = Convert.ToDateTime(DateTime.Now.ToString()).ToString("yyyy-MM-dd");
                     ship_departure.updated_date = Convert.ToDateTime(DateTime.Now.ToString()).ToString("yyyy-MM-dd");
                     db.Ship_Departure.Add(ship_departure);
                     db.SaveChanges();
                     TempData["errorMessage"] = "Ship Departure Added Successfully";
                 }
                 return RedirectToAction("Index");
             }
             return RedirectToAction("Index");
         }
         else
         {
             return RedirectToAction("../Home/Dashboard");
         }
     }
     else
     {
         return RedirectToAction("../Home");
     }
 }
 public ActionResult DbSearchresult(Ship_DepartureModel ship_departure)
 {
     if (Session["login_status"] != null)
     {
         int[] z = (int[])Session["function_id"];
         if (z.Contains(28))
         {
             if (ship_departure.shipp_name != null && ship_departure.geography_id != 0)
             {
                 var result = from sa in db.Ship_Departure
                              join s in db.Ships on sa.shipp_id equals s.ship_id
                              join st in db.States on sa.state_id equals st.state_id
                              join c in db.Countries on st.country_id equals c.country_id
                              join g in db.Geographies on c.geography_id equals g.geography_id
                              join d in db.Days on sa.day_id equals d.day_id
                              where s.ship_name.Contains(ship_departure.shipp_name) && g.geography_id == ship_departure.geography_id
                              select new Ship_DepartureModel { ship_departure_id = sa.ship_departure_id, shipp_name = s.ship_name, country = c.country_name, state = st.state_name, day_code = d.day_code, status_id = sa.status_id, ship_departure_code = sa.ship_departure_code };
                 return View("Index", result.ToList());
             }
             else if (ship_departure.shipp_name != null && ship_departure.geography_id == 0)
             {
                 var result = from sa in db.Ship_Departure
                              join s in db.Ships on sa.shipp_id equals s.ship_id
                              join st in db.States on sa.state_id equals st.state_id
                              join c in db.Countries on st.country_id equals c.country_id
                              join g in db.Geographies on c.geography_id equals g.geography_id
                              join d in db.Days on sa.day_id equals d.day_id
                              where s.ship_name.Contains(ship_departure.shipp_name)
                              select new Ship_DepartureModel { ship_departure_id = sa.ship_departure_id, shipp_name = s.ship_name, country = c.country_name, state = st.state_name, day_code = d.day_code, status_id = sa.status_id, ship_departure_code = sa.ship_departure_code };
                 return View("Index", result.ToList());
             }
             else if (ship_departure.shipp_name == null && ship_departure.geography_id != 0)
             {
                 var result = from sa in db.Ship_Departure
                              join s in db.Ships on sa.shipp_id equals s.ship_id
                              join st in db.States on sa.state_id equals st.state_id
                              join c in db.Countries on st.country_id equals c.country_id
                              join g in db.Geographies on c.geography_id equals g.geography_id
                              join d in db.Days on sa.day_id equals d.day_id
                              where g.geography_id == ship_departure.geography_id
                              select new Ship_DepartureModel { ship_departure_id = sa.ship_departure_id, shipp_name = s.ship_name, country = c.country_name, state = st.state_name, day_code = d.day_code, status_id = sa.status_id, ship_departure_code = sa.ship_departure_code };
                 return View("Index", result.ToList());
             }
             return RedirectToAction("Index");
         }
         else
         {
             return RedirectToAction("../Home/Dashboard");
         }
     }
     else
     {
         return RedirectToAction("../Home");
     }
 }