public ActionResult Delete(int id)
        {
            //AccessRights
            ServicingOptionItem servicingOptionItem = new ServicingOptionItem();

            servicingOptionItem = servicingOptionItemRepository.GetItem(id);

            //Check Exists
            if (servicingOptionItem == null)
            {
                ViewData["ActionMethod"] = "DeleteGet";
                return(View("RecordDoesNotExistError"));
            }
            //Check Access Rights
            RolesRepository rolesRepository = new RolesRepository();

            if (!rolesRepository.HasWriteAccessToServicingOptionGroup(servicingOptionItem.ServicingOptionGroupId))
            {
                ViewData["Message"] = "You do not have access to this item";
                return(View("Error"));
            }

            //Add Linked Information
            servicingOptionItemRepository.EditItemForDisplay(servicingOptionItem);

            //Return
            return(View(servicingOptionItem));
        }
        public ActionResult Edit(int id, FormCollection collection)
        {
            ServicingOptionItem servicingOptionItem = new ServicingOptionItem();

            servicingOptionItem = servicingOptionItemRepository.GetItem(id);

            //Check Exists
            if (servicingOptionItem == null)
            {
                ViewData["ActionMethod"] = "EditGet";
                return(View("RecordDoesNotExistError"));
            }
            //AccessRights
            RolesRepository rolesRepository = new RolesRepository();

            if (!rolesRepository.HasWriteAccessToServicingOptionGroup(servicingOptionItem.ServicingOptionGroupId))
            {
                ViewData["Message"] = "You do not have access to this item";
                return(View("Error"));
            }

            try
            {
                UpdateModel(servicingOptionItem);
            }
            catch
            {
                string n = "";
                foreach (ModelState modelState in ViewData.ModelState.Values)
                {
                    foreach (ModelError error in modelState.Errors)
                    {
                        n += error.ErrorMessage;
                    }
                }
                ViewData["Message"] = "ValidationError : " + n;
                return(View("Error"));
            }

            try
            {
                servicingOptionItemRepository.Edit(servicingOptionItem);
            }
            catch (SqlException ex)
            {
                //Versioning Error
                if (ex.Message == "SQLVersioningError")
                {
                    ViewData["ReturnURL"] = "/ServicingOptionItem.mvc/Edit/" + servicingOptionItem.ServicingOptionItemId;
                    return(View("VersionError"));
                }

                //Generic Error
                ViewData["Message"] = "There was a problem with your request, please see the log file or contact an administrator for details";
                return(View("Error"));
            }


            return(RedirectToAction("List", new { id = servicingOptionItem.ServicingOptionGroupId }));
        }
        //Delete ServicingOptionItem
        public void Delete(ServicingOptionItem servicingOptionItem)
        {
            string adminUserGuid = HttpContext.Current.User.Identity.Name.Split(new[] { '|' })[0];

            db.spDesktopDataAdmin_DeleteServicingOptionItem_v1(
                servicingOptionItem.ServicingOptionItemId,
                adminUserGuid,
                servicingOptionItem.VersionNumber);
        }
        public ActionResult Create(ServicingOptionItem servicingOptionItem)
        {
            //Check Exists
            ServicingOptionGroup servicingOptionGroup = new ServicingOptionGroup();

            servicingOptionGroup = servicingOptionGroupRepository.GetGroup(servicingOptionItem.ServicingOptionGroupId);

            //Check Exists
            if (servicingOptionGroup == null)
            {
                ViewData["ActionMethod"] = "CreateGet";
                return(View("RecordDoesNotExistError"));
            }

            RolesRepository rolesRepository = new RolesRepository();

            if (!rolesRepository.HasWriteAccessToServicingOptionGroup(servicingOptionItem.ServicingOptionGroupId))
            {
                ViewData["Message"] = "You do not have access to this item";
                return(View("Error"));
            }

            //Update  Model from Form
            try
            {
                UpdateModel(servicingOptionItem);
            }
            catch
            {
                string n = "";
                foreach (ModelState modelState in ViewData.ModelState.Values)
                {
                    foreach (ModelError error in modelState.Errors)
                    {
                        n += error.ErrorMessage;
                    }
                }
                ViewData["Message"] = "ValidationError : " + n;
                return(View("Error"));
            }

            //Database Update
            try
            {
                servicingOptionItemRepository.Add(servicingOptionItem);
            }
            catch (SqlException ex)
            {
                LogRepository logRepository = new LogRepository();
                logRepository.LogError(ex.Message);

                ViewData["Message"] = "There was a problem with your request, please see the log file or contact an administrator for details";
                return(View("Error"));
            }

            return(RedirectToAction("List", new { id = servicingOptionItem.ServicingOptionGroupId }));
        }
        // GET: /View
        public ActionResult View(int id)
        {
            ServicingOptionItem servicingOptionItem = new ServicingOptionItem();

            servicingOptionItem = servicingOptionItemRepository.GetItem(id);
            if (servicingOptionItem == null)
            {
                ViewData["ActionMethod"] = "ViewGet";
                return(View("RecordDoesNotExistError"));
            }
            servicingOptionItemRepository.EditItemForDisplay(servicingOptionItem);
            return(View(servicingOptionItem));
        }
        // GET: /Edit
        public ActionResult Edit(int id)
        {
            ServicingOptionItem servicingOptionItem = new ServicingOptionItem();

            servicingOptionItem = servicingOptionItemRepository.GetItem(id);

            //Check Exists
            if (servicingOptionItem == null)
            {
                ViewData["ActionMethod"] = "EditGet";
                return(View("RecordDoesNotExistError"));
            }
            //AccessRights
            RolesRepository rolesRepository = new RolesRepository();

            if (!rolesRepository.HasWriteAccessToServicingOptionGroup(servicingOptionItem.ServicingOptionGroupId))
            {
                ViewData["Message"] = "You do not have access to this item";
                return(View("Error"));
            }

            ServicingOptionRepository servicingOptionRepository = new ServicingOptionRepository();
            SelectList servicingOptionsList = new SelectList(servicingOptionRepository.GetAllServicingOptions().ToList(), "ServicingOptionId", "ServicingOptionName");

            ViewData["ServicingOptions"] = servicingOptionsList;

            GDSRepository gdsRepository = new GDSRepository();
            SelectList    gDSList       = new SelectList(gdsRepository.GetAllGDSsExceptALL().ToList(), "GDSCode", "GDSName");

            ViewData["GDSs"] = gDSList;

            ViewData["DepartureTimeWindowMinutesList"] = new SelectList(
                servicingOptionRepository.GetServicingOptionDepartureTimeWindows().Select(
                    x => new { value = x, text = x }
                    ), "value", "text", servicingOptionItem.DepartureTimeWindowMinutes);

            ViewData["ArrivalTimeWindowMinutesList"] = new SelectList(
                servicingOptionRepository.GetServicingOptionArrivalTimeWindows().Select(
                    x => new { value = x, text = x }
                    ), "value", "text", servicingOptionItem.ArrivalTimeWindowMinutes);

            ViewData["MaximumStopsList"] = new SelectList(
                servicingOptionRepository.GetServicingOptionMaximumStops().Select(
                    x => new { value = x, text = x }
                    ), "value", "text", servicingOptionItem.MaximumStops);

            servicingOptionItemRepository.EditItemForDisplay(servicingOptionItem);
            return(View(servicingOptionItem));
        }
        //Add Data From Linked Tables for Display
        public void EditItemForDisplay(ServicingOptionItem servicingOptionItem)
        {
            ServicingOptionRepository servicingOptionRepository = new ServicingOptionRepository();
            ServicingOption servicingOption = new ServicingOption();
            servicingOption = servicingOptionRepository.GetServicingOption(servicingOptionItem.ServicingOptionId);
            if (servicingOption != null)
            {
                servicingOptionItem.ServicingOptionName = servicingOption.ServicingOptionName;
				servicingOptionItem.GDSRequiredFlag = servicingOption.GDSRequiredFlag;
            }

            ServicingOptionGroupRepository servicingOptionGroupRepository = new ServicingOptionGroupRepository();
            ServicingOptionGroup servicingOptionGroup = new ServicingOptionGroup();
            servicingOptionGroup = servicingOptionGroupRepository.GetGroup(servicingOptionItem.ServicingOptionGroupId);
            if (servicingOptionGroup != null)
            {
                servicingOptionItem.ServicingOptionGroupName = servicingOptionGroup.ServicingOptionGroupName;

            }

            if(servicingOptionItem.GDSCode!=null){
                GDSRepository gDSRepository = new GDSRepository();
                GDS gds = new GDS();
                gds = gDSRepository.GetGDS(servicingOptionItem.GDSCode);
                if (gds != null)
                {
                    servicingOptionItem.GDSName = gds.GDSName;

                }
            }

			//Get ServicingOptionFareCalculations
			ServicingOptionFareCalculation servicingOptionFareCalculation = new ServicingOptionFareCalculation();
			servicingOptionFareCalculation = db.ServicingOptionFareCalculations.SingleOrDefault(c => c.ServicingOptionItemId == servicingOptionItem.ServicingOptionItemId);
			if (servicingOptionFareCalculation != null)
			{
				servicingOptionItem.DepartureTimeWindowMinutes = servicingOptionFareCalculation.DepartureTimeWindowMinutes;
				servicingOptionItem.ArrivalTimeWindowMinutes = servicingOptionFareCalculation.ArrivalTimeWindowMinutes;
				servicingOptionItem.MaximumConnectionTimeMinutes = servicingOptionFareCalculation.MaximumConnectionTimeMinutes; 
				servicingOptionItem.MaximumStops = servicingOptionFareCalculation.MaximumStops;
				servicingOptionItem.UseAlternateAirportFlag = servicingOptionFareCalculation.UseAlternateAirportFlag;
				servicingOptionItem.NoPenaltyFlag = servicingOptionFareCalculation.NoPenaltyFlag;
				servicingOptionItem.NoRestrictionsFlag = servicingOptionFareCalculation.NoRestrictionsFlag;
			}
        }
        public ActionResult Delete(int id, FormCollection collection)
        {
            //Get Parent
            ServicingOptionItem servicingOptionItem = new ServicingOptionItem();

            servicingOptionItem = servicingOptionItemRepository.GetItem(id);

            //Check Exists
            if (servicingOptionItem == null)
            {
                ViewData["ActionMethod"] = "DeleteGet";
                return(View("RecordDoesNotExistError"));
            }
            //Check Access Rights
            RolesRepository rolesRepository = new RolesRepository();

            if (!rolesRepository.HasWriteAccessToServicingOptionGroup(servicingOptionItem.ServicingOptionGroupId))
            {
                ViewData["Message"] = "You do not have access to this item";
                return(View("Error"));
            }

            //Delete Item
            try
            {
                servicingOptionItem.VersionNumber = Int32.Parse(collection["VersionNumber"]);
                servicingOptionItemRepository.Delete(servicingOptionItem);
            }
            catch (SqlException ex)
            {
                //Versioning Error - go to standard versionError page
                if (ex.Message == "SQLVersioningError")
                {
                    ViewData["ReturnURL"] = "/ServicingOptionItem.mvc/Delete/" + servicingOptionItem.ServicingOptionItemId;
                    return(View("VersionError"));
                }
                //Generic Error
                ViewData["Message"] = "There was a problem with your request, please see the log file or contact an administrator for details";
                return(View("Error"));
            }

            //Return
            return(RedirectToAction("List", new { id = servicingOptionItem.ServicingOptionGroupId }));
        }
        //Add ServicingOptionItem 
        public void Add(ServicingOptionItem servicingOptionItem)
        {
            string adminUserGuid = HttpContext.Current.User.Identity.Name.Split(new[] { '|' })[0];

            db.spDesktopDataAdmin_InsertServicingOptionItem_v1(
                servicingOptionItem.ServicingOptionGroupId,
                servicingOptionItem.ServicingOptionId,
                servicingOptionItem.ServicingOptionItemValue,
                servicingOptionItem.GDSCode,
                servicingOptionItem.ServicingOptionItemInstruction,
                servicingOptionItem.DisplayInApplicationFlag,
				servicingOptionItem.DepartureTimeWindowMinutes,
				servicingOptionItem.ArrivalTimeWindowMinutes,
				servicingOptionItem.MaximumStops,
				servicingOptionItem.MaximumConnectionTimeMinutes,
				servicingOptionItem.UseAlternateAirportFlag,
				servicingOptionItem.NoPenaltyFlag,
				servicingOptionItem.NoRestrictionsFlag,
                adminUserGuid
            );
        }
        // GET: /Create
        public ActionResult Create(int id)
        {
            //Check Exists
            ServicingOptionGroup servicingOptionGroup = new ServicingOptionGroup();

            servicingOptionGroup = servicingOptionGroupRepository.GetGroup(id);
            if (servicingOptionGroup == null)
            {
                ViewData["ActionMethod"] = "CreateGet";
                return(View("RecordDoesNotExistError"));
            }

            RolesRepository rolesRepository = new RolesRepository();

            if (!rolesRepository.HasWriteAccessToServicingOptionGroup(id))
            {
                ViewData["Message"] = "You do not have access to this item";
                return(View("Error"));
            }
            ServicingOptionRepository servicingOptionRepository = new ServicingOptionRepository();
            SelectList servicingOptionsList = new SelectList(servicingOptionRepository.GetAvailableServicingOptions(id).ToList(), "ServicingOptionId", "ServicingOptionName");

            ViewData["ServicingOptions"] = servicingOptionsList;

            GDSRepository gdsRepository = new GDSRepository();
            SelectList    gDSList       = new SelectList(gdsRepository.GetAllGDSsExceptALL().ToList(), "GDSCode", "GDSName");

            ViewData["GDSs"] = gDSList;

            ViewData["DepartureTimeWindowMinutesList"] = new SelectList(servicingOptionRepository.GetServicingOptionDepartureTimeWindows().Select(x => new { value = x, text = x }), "value", "text");
            ViewData["ArrivalTimeWindowMinutesList"]   = new SelectList(servicingOptionRepository.GetServicingOptionArrivalTimeWindows().Select(x => new { value = x, text = x }), "value", "text");
            ViewData["MaximumStopsList"] = new SelectList(servicingOptionRepository.GetServicingOptionMaximumStops().Select(x => new { value = x, text = x }), "value", "text");

            ServicingOptionItem servicingOptionItem = new ServicingOptionItem();

            servicingOptionItem.ServicingOptionGroupName = servicingOptionGroup.ServicingOptionGroupName;
            servicingOptionItem.ServicingOptionGroupId   = servicingOptionGroup.ServicingOptionGroupId;

            return(View(servicingOptionItem));
        }