// GET: Region/Create
        public ActionResult Create()
        {
            RegionStoreRelayModel regionStoreRelay = new RegionStoreRelayModel();

            regionStoreRelay.CheckboxGatewayModel = GetGatewayRelays();

            var colorInfo = from colors in db.colors
                            select new { colors.colorID };

            var colorsUsed = from region in db.region
                             select new { region.colorID };

            var temp = from colors in colorInfo.Except(colorsUsed)
                       join colors2 in db.colors on colors.colorID equals colors2.colorID
                       select new { colors2.colorName, colors2.colorID };

            ViewBag.region = new { colorID = new SelectList(temp, "colorID", "colorName") };

            return(View(regionStoreRelay));
        }
        public ActionResult Create(RegionStoreRelayModel regionStoreRelay)
        {
            if (!storeIPOkay(regionStoreRelay.store))
            {
                ModelState.AddModelError("store.storeIP", "IP already exists");
            }
            if (!relayIPOkay(regionStoreRelay.relay))
            {
                ModelState.AddModelError("relay.relayIP", "IP already exists");
            }

            if (regionStoreRelay.CheckboxGatewayModel.Where(x => x.selected).Count() < 1)
            {
                ModelState.AddModelError("", "Needs to be connected to gateway or processing center");
            }

            if (ModelState.IsValid)
            {
                region newRegion = new region()
                {
                    colorID      = regionStoreRelay.region.colorID,
                    regionNumber = db.region.Select(x => x.regionID).Max() + 1
                };
                db.region.Add(newRegion);
                db.store.Add(regionStoreRelay.store);
                db.SaveChanges();


                relay gatewayRelay = new relay()
                {
                    isActive           = true,
                    isProcessingCenter = false,
                    queueLimit         = regionStoreRelay.relay.queueLimit,
                    isGateway          = true,
                    relayIP            = regionStoreRelay.relay.relayIP,
                    regionID           = newRegion.regionID
                };

                db.relay.Add(gatewayRelay);
                db.SaveChanges();

                connections connection = new connections()
                {
                    storeID     = regionStoreRelay.store.storeID,
                    destRelayID = gatewayRelay.relayID,
                    isActive    = true,
                    weight      = regionStoreRelay.connections.weight
                };

                db.connections.Add(connection);
                db.SaveChanges();

                var selectedRelays = regionStoreRelay.CheckboxGatewayModel.Where(x => x.selected);
                foreach (var selectedRelay in selectedRelays)
                {
                    connections connection2 = new connections()
                    {
                        relayID     = gatewayRelay.relayID,
                        destRelayID = selectedRelay.relayID,
                        isActive    = true,
                        weight      = selectedRelay.weight
                    };

                    db.connections.Add(connection2);
                }

                db.SaveChanges();
                return(RedirectToAction("Index", "Home"));
            }

            //regionStoreRelay.CheckboxGatewayModel = GetGatewayRelays();

            var colorInfo = from colors in db.colors
                            select new { colors.colorID };

            var colorsUsed = from region in db.region
                             select new { region.colorID };

            var temp = from colors in colorInfo.Except(colorsUsed)
                       join colors2 in db.colors on colors.colorID equals colors2.colorID
                       select new { colors2.colorName, colors2.colorID };

            ViewBag.region = new { colorID = new SelectList(temp, "colorID", "colorName") };
            return(View(regionStoreRelay));
        }