//Adding Requirement
        //GET
        public ActionResult Add()
        {
            var req = new Requirements();
            //sites list
            Sites s = new Sites();
            s.SitesList = new SelectList(s.GetAllSites(), "SiteID", "SiteName");
            req.Sites = s;

            return View(req);
        }
        public ActionResult Update(Requirements req)
        {
            String thisPageUrl = this.ControllerContext.HttpContext.Request.Url.AbsoluteUri;
            TempData["previous"] = thisPageUrl;

            if (ModelState.IsValid)
            {
                try
                {
                    if (req != null)
                    {
                        try
                        {
                            req.SiteID = int.Parse(req.SelectedSite);
                            req.LastUpdatedBy = LoggedUser();
                            req.LastUpdatedDate = DateTime.Now;
                            db.Entry(req).State = System.Data.Entity.EntityState.Modified;
                            db.SaveChanges();
                            TempData["message"] = "The requirement was updated.";
                            return View("~/Views/Shared/Success.cshtml");
                        }
                        catch (Exception e)
                        {
                            TempData["message"] = "There was an error. Try again or contact administrator.";
                            return View("~/Views/Shared/Error.cshtml");
                        }
                    }
                    else
                    {
                        TempData["message"] = "There was an error. Try again or contact administrator.";
                        return View("~/Views/Shared/Error.cshtml");
                    }
                }
                catch (Exception e)
                {
                    TempData["message"] = "There was an error. Try again or contact administrator.";
                    return View("~/Views/Shared/Error.cshtml");
                }
            }

            Sites site = new Sites();
            var sites = from s in db.Sites where s.SiteID == req.SiteID select s;
            if (sites.Count() > 0) { site = sites.First(); }
            site.SitesList = new SelectList(site.GetAllSites(), "SiteID", "SiteName");
            req.Sites = site;
            return View(req);
        }
        public ActionResult Add(Requirements requirement)
        {
            String thisPageUrl = this.ControllerContext.HttpContext.Request.Url.AbsoluteUri;
            TempData["previous"] = thisPageUrl;

            //getting SiteID
            int SiteID = 0;
            if (!string.IsNullOrEmpty(requirement.SelectedSite))
            {
                try
                {
                    SiteID = int.Parse(requirement.SelectedSite);
                    var site = db.Sites.Find(SiteID);
                    if (site != null)
                    {
                        if (ModelState.IsValid)
                        {
                            requirement.SiteID = SiteID;
                            requirement.RegisteredBy = LoggedUser();
                            requirement.RegisteredDate = DateTime.Now;
                            //saving database
                            db.Requirements.Add(requirement);
                            db.SaveChanges();

                            TempData["message"] = "The requirement was added.";
                            return View("~/Views/Shared/Success.cshtml");
                        }
                        else
                        {
                            var req = new Requirements();
                            //sites list
                            Sites s = new Sites();
                            s.SitesList = new SelectList(s.GetAllSites(), "SiteID", "SiteName");
                            req.Sites = s;

                            return View(req);
                        }
                    }
                    else
                    {

                        TempData["message"] = "There site you selected doesn't exist.  Try again or contact administrator.";
                        return View("~/Views/Shared/Error.cshtml");
                    }
                }
                catch (Exception e)
                {

                    TempData["message"] = "There was an error registering requirement.  Try again or contact administrator.";
                    return View("~/Views/Shared/Error.cshtml");
                }
            }
            else
            {
                var req = new Requirements();
                //sites list
                Sites s = new Sites();
                s.SitesList = new SelectList(s.GetAllSites(), "SiteID", "SiteName");
                req.Sites = s;

                return View(req);
            }
        }
        public ActionResult Search(string SelectedSite)
        {
            Sites site = new Sites();
            if (!string.IsNullOrEmpty(SelectedSite))
            {
                int SiteID = int.Parse(SelectedSite);
                site = db.Sites.Find(SiteID);
                if (site != null)
                {
                    //requirements
                    var requirements = from r in db.Requirements where r.SiteID == SiteID select r;
                    Requirements req = new Requirements();
                    site.SitesList = new SelectList(site.GetAllSites(), "SiteID", "SiteName");
                    req.Sites = site;
                    req.SiteRequirements = requirements.ToList();
                    ViewBag.Error = false;
                    return View(req);
                }
                else
                {
                    ViewBag.Message = "There are not batches for the selected site.";
                    return View();
                }
            }

            ViewBag.Error = true;
            ModelState.AddModelError("Site", "You must select a site.");
            var obj = new Requirements();
            site = new Sites();
            site.SitesList = new SelectList(site.GetAllSites(), "SiteID", "SiteName");
            obj.Sites = site;
            return View(obj);
        }
 //Search by Site
 public ActionResult Search()
 {
     var obj = new Requirements();
     var s = new Sites();
     s.SitesList = new SelectList(s.GetAllSites(), "SiteID", "SiteName");
     obj.Sites = s;
     return View(obj);
 }
 //List All Sites
 public ActionResult AllRequirements()
 {
     Requirements req = new Requirements();
     var reqs = req.GetAllRequirements();
     if (reqs.Count() > 0)
     {
         return View(reqs.ToList());
     }
     else
     {
         ViewBag.Message = "There are not registered requirements.";
         return View();
     }
 }