public ActionResult Edit([Bind(Include = "GroupId,GroupName,CityIds")] CityGroup cityGroup, FormCollection fc)
 {
     if (ModelState.IsValid)
     {
         var selectedStateId = 0;
         Int32.TryParse(fc["StateId"].ToString(), out selectedStateId);
         var allCitysForGivenState = db.Citys.Where(c => c.StateId == selectedStateId);
         var selectedCityIds       = new StringBuilder();
         if (!string.IsNullOrEmpty(cityGroup.CityIds))
         {
             var oldCityIds = cityGroup.CityIds.Split(',');
             foreach (var cityId in oldCityIds)
             {
                 Int32.TryParse(cityId, out int id);
                 if (!allCitysForGivenState.Any(c => c.Id == id))
                 {
                     selectedCityIds.Append(cityId + ",");
                 }
             }
         }
         cityGroup.CityIds = (selectedCityIds.ToString() + fc["SelectedCityIds"]).Trim(',');
         if (cityGroup.GroupId > 0)
         {
             db.Entry(cityGroup).State = EntityState.Modified;
         }
         else
         {
             db.CityGroups.Add(cityGroup);
         }
         var x = db.SaveChanges();
         return(RedirectToAction("Edit", "CityGroups", new { id = cityGroup.GroupId }));
     }
     return(View(cityGroup));
 }
示例#2
0
        public int CalculateMaxConnections(int maxCities, int[][] args)
        {
            CityGroup[] cityAssigment = new CityGroup[maxCities + 1];
            var         allGroups     = new List <CityGroup>();

            int groupId = 1;

            for (int ci = 0; ci < args.Length; ++ci)
            {
                var cityA = args[ci][0];
                var cityB = args[ci][1];

                //no groups assigned
                if (cityAssigment[cityA] == null && cityAssigment[cityB] == null)
                {
                    var cityGroup = new CityGroup(groupId++);

                    cityGroup.AddCity(cityA);
                    if (cityA != cityB)
                    {
                        cityGroup.AddCity(cityB);
                    }

                    cityAssigment[cityA] = cityAssigment[cityB] = cityGroup;
                    allGroups.Add(cityGroup);

                    continue;
                }

                //A not assigned, B assigned
                if (cityAssigment[cityA] == null && cityAssigment[cityB] != null)
                {
                    cityAssigment[cityB].AddCity(cityA);
                    cityAssigment[cityA] = cityAssigment[cityB];

                    continue;
                }

                //A assigned, B not assigned
                if (cityAssigment[cityA] != null && cityAssigment[cityB] == null)
                {
                    cityAssigment[cityA].AddCity(cityB);
                    cityAssigment[cityB] = cityAssigment[cityA];

                    continue;
                }

                //same assigment
                if (cityAssigment[cityA] == cityAssigment[cityB])
                {
                    continue;
                }

                //re-assign all to parent group A
                cityAssigment[cityA].ConvertToSubGroup(cityAssigment[cityB]);
            }

            return(allGroups.Max(g => g.Count));
        }
        public ActionResult DeleteConfirmed(int id)
        {
            CityGroup cityGroup = db.CityGroups.Find(id);

            db.CityGroups.Remove(cityGroup);
            db.SaveChanges();
            return(RedirectToAction("Index"));
        }
示例#4
0
 // Constructor
 public City(string name, CityGroup group)
 {
     _name            = name;
     _group           = group;
     _canBeOutbroken  = true;
     _infectionLevel  = 0;
     _connectedCities = new List <City>();
     _hasBase         = false;
     _observers       = new List <IObserver <City> >();
 }
示例#5
0
 // return the disease given the type
 public Disease GetDisease(CityGroup type)
 {
     foreach (Disease disease in _diseases)
     {
         if (disease.type == type)
         {
             return(disease);
         }
     }
     return(null);
 }
        public ActionResult Create([Bind(Include = "GroupId,GroupName,CityIds")] CityGroup cityGroup)
        {
            if (ModelState.IsValid)
            {
                db.CityGroups.Add(cityGroup);
                db.SaveChanges();
                return(RedirectToAction("Index"));
            }

            return(View(cityGroup));
        }
        // GET: Admin/CityGroups/Delete/5
        public ActionResult Delete(int?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            CityGroup cityGroup = db.CityGroups.Find(id);

            if (cityGroup == null)
            {
                return(HttpNotFound());
            }
            return(View(cityGroup));
        }
示例#8
0
        public void LinqQuery08()
        {
            var customers = new LinqSamples().GetCustomerList();
            var result    =
                from c in customers
                from order in c.Orders
                group new { c.CustomerID, order } by c.City into CityGroup
                select new
            {
                City = CityGroup.Key,
                AverageOrderPrice           = CityGroup.Average(cg => cg.order.Total),
                AverageOrdersCountCustomers = (double)CityGroup.Count() / CityGroup.Select(cg => cg.CustomerID).Distinct().Count()
            };

            ObjectDumper.Write(result, 5);
        }
示例#9
0
            public void ConvertToSubGroup(CityGroup subGroup)
            {
                if (TopLevel == subGroup || TopLevel == subGroup.TopLevel)
                {
                    return;
                }

                //set subgroup parent
                TopLevel.Count            += subGroup.TopLevel.Count;
                subGroup.TopLevel.Count    = 0;
                subGroup.TopLevel.TopLevel = TopLevel;

                //set subgroup
                TopLevel.Count   += subGroup.Count;
                subGroup.Count    = 0;
                subGroup.TopLevel = TopLevel;
            }
示例#10
0
        // remove 4 of a colour of card from the hand
        public List <PlayerCard> removeFourCardsToCureDisease(CityGroup cardColour)
        {
            int removedCount             = 0;
            List <PlayerCard> returnList = new List <PlayerCard>();

            foreach (PlayerCard card in cardsInHand)
            {
                if (card.group == cardColour)
                {
                    cardsInHand.Remove(card);
                    returnList.Add(card);
                    removedCount++;
                    if (removedCount >= 4)
                    {
                        return(returnList);
                    }
                }
            }
            return(returnList);
        }
        /// <summary>
        /// Get Addresses, grouped by city
        /// </summary>
        public List <CityGroup> GetCityGroups()
        {
            var cityGroups = new List <CityGroup>();
            var addresses  = GetAddresses();
            // Group by city. Take into account the region and country as well for the internal key, delimited by a caret.
            // The comparer will ignore the case, and extra characters.
            var cities = addresses.GroupBy(x => $"{x.City}^{x.Region}^{x.Country}", new AddressComparer());

            foreach (var city in cities)
            {
                var cityGroup = new CityGroup
                {
                    City      = city.FirstOrDefault().City,
                    Region    = city.FirstOrDefault().Region,
                    Country   = city.FirstOrDefault().Country,
                    Addresses = new List <Address>()
                };

                foreach (var address in city)
                {
                    cityGroup.Addresses.Add(new Address
                    {
                        Id            = address.Id,
                        FirstName     = address.FirstName,
                        LastName      = address.LastName,
                        StreetAddress = address.StreetAddress
                    });
                }

                cityGroup.Addresses = cityGroup.Addresses.OrderBy(x => x.LastName)
                                      .ThenBy(x => x.FirstName)
                                      .ThenBy(x => x.StreetAddress)
                                      .ToList();
                cityGroups.Add(cityGroup);
            }

            return(cityGroups.OrderBy(x => x.City)
                   .ThenBy(x => x.Region)
                   .ThenBy(x => x.Country)
                   .ToList());
        }
示例#12
0
 public Disease(CityGroup type)
 {
     _type = type;
 }
示例#13
0
 // Constructor
 public Card(string city, CityGroup group)
 {
     _city     = city;
     _isFaceUp = false;
     _group    = group;
 }
示例#14
0
 // Constructor
 public PlayerCard(string city, CityGroup group) : base(city, group)
 {
     loadCardImages();
 }
示例#15
0
 // Constructor
 public InfectionCard(string city, CityGroup group) : base(city, group)
 {
     loadCardImages();
 }
示例#16
0
 public CityGroup(int groupId)
 {
     GroupId  = groupId;
     TopLevel = this;
     Count    = 0;
 }