Exemplo n.º 1
0
        public ActionResult Create(
            [Bind(Prefix = "Race", Include = "BaseURL,RaceId,ApiName,DisplayName,LongDisplayName,RaceDate,ShortName,Distance")] Race race)


        {
            var rc = new RaceConditions();

            race.Conditions = rc;
            race.RaceId     = race.RaceId.ToUpper();

            if (ModelState.IsValid)
            {
                race.ValidateMessage = "Not Validated";
                _DBContext.Races.Add(race);
                _DBContext.SaveChanges();
                return(RedirectToAction("Index"));
            }
            else
            {
                //NOTE: This is a temporary workaround. The View needs the model and should display the correct error
                //but this view needs both a Race model and a Conditions Model and I need to build that ViewModel
                ModelState.AddModelError("", "ERROR!!");
            }


            return(View("List"));
        }
Exemplo n.º 2
0
        public ActionResult DeleteConfirmed(int id /*race condition id*/)
        {
            RaceConditions raceConditions = db.RaceConditions.Find(id);

            db.RaceConditions.Remove(raceConditions);
            db.SaveChanges();
            return(RedirectToAction("Index"));
        }
Exemplo n.º 3
0
        public ActionResult Create([Bind(Include = "RaceConditionsId,SwimLayout,BikeLayout,RunLayout")] RaceConditions raceConditions)
        {
            if (ModelState.IsValid)
            {
                db.RaceConditions.Add(raceConditions);
                db.SaveChanges();
                return(RedirectToAction("Index"));
            }

            return(View(raceConditions));
        }
Exemplo n.º 4
0
        // GET: RaceConditions/Delete/5
        public ActionResult Delete(int?id /*racecondition id */)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            RaceConditions raceConditions = db.RaceConditions.Find(id);

            if (raceConditions == null)
            {
                return(HttpNotFound());
            }
            return(View(raceConditions));
        }
Exemplo n.º 5
0
        public ActionResult Edit(
            [Bind(Prefix = "Race", Include = "RaceId,ApiName,ConditionsId,BaseURL,DisplayName,LongDisplayName,RaceDate,ShortName,Distance")] Race race,
            [Bind(Prefix = "Conditions", Include = "RaceConditionsId,SwimLayout,BikeLayout,RunLayout")] RaceConditions conditions)
        {
            if (ModelState.IsValid)
            {
                _DBContext.Entry(race).State = EntityState.Modified;
                _DBContext.SaveChanges();

                _DBContext.Entry(conditions).State = EntityState.Modified;
                _DBContext.SaveChanges();
                return(RedirectToAction("Index"));
            }
            return(View(race));
        }
Exemplo n.º 6
0
        private void Save(RaceConditions conditions, SimpleRaceConditionsViewModel viewModel)
        {
            Save(conditions, conditions.SwimLayout, viewModel.selectedSwimLayout, TagType.SwimLayout);
            Save(conditions, conditions.SwimMedium, viewModel.selectedSwimMedium, TagType.SwimMedium);
            Save(conditions, conditions.SwimOther, viewModel.selectedSwimOther, TagType.SwimOther);
            Save(conditions, conditions.SwimWeather, viewModel.selectedSwimWeather, TagType.SwimWeather);


            Save(conditions, conditions.BikeLayout, viewModel.selectedBikeLayout, TagType.BikeLayout);
            Save(conditions, conditions.BikeMedium, viewModel.selectedBikeMedium, TagType.BikeMedium);
            Save(conditions, conditions.BikeOther, viewModel.selectedBikeOther, TagType.BikeOther);
            Save(conditions, conditions.BikeWeather, viewModel.selectedBikeWeather, TagType.BikeWeather);


            Save(conditions, conditions.RunLayout, viewModel.selectedRunLayout, TagType.RunLayout);
            Save(conditions, conditions.RunMedium, viewModel.selectedRunMedium, TagType.RunMedium);
            Save(conditions, conditions.RunOther, viewModel.selectedRunOther, TagType.RunOther);
            Save(conditions, conditions.RunWeather, viewModel.selectedRunWeather, TagType.RunWeather);
        }
Exemplo n.º 7
0
        private void Save(RaceConditions conditions, List <RaceConditionTag> persistedList, List <String> selectedValues, TagType tagType)
        {
            if (selectedValues == null)
            {
                if (persistedList.Count > 0)
                {
                    selectedValues = new List <string>(); //the reason we continue is in the case wehre all items have been removed from list and we need to delete them
                }
                else
                {
                    return; //we have no further business to do
                }
            }
            //get the tagIds that have previously been saved and convert them to strings in order to compare them
            var savedList = persistedList.Select(t => t.TagId).ToList().ConvertAll <string>(delegate(int i) { return(i.ToString()); });

            //get the unique items that should be added
            var newItems = selectedValues.Except(savedList).ToList();

            //find the items that were removed
            var deletedItems = savedList.Except(selectedValues).ToList();

            foreach (string id in deletedItems)
            {
                var rcTag = persistedList.Where(m => m.TagId == Int32.Parse(id)).SingleOrDefault();
                persistedList.Remove(rcTag);
                db.RaceConditionTags.Remove(rcTag);
            }

            foreach (string s in newItems)
            {
                Tag  tag;
                int  tagId;
                bool result = Int32.TryParse(s, out tagId);
                //tag is either a tag id or a new tag value that the user typed
                if (result)
                {
                    tag = db.Tags.Find(tagId);
                }
                else //a new tag
                {
                    tag = new Tag
                    {
                        Value = s,
                        Type  = tagType
                    };

                    db.Tags.Add(tag);
                    db.SaveChanges();
                }


                var rcTag = new RaceConditionTag  //because we already filtered out new items, we should always need to create
                {
                    RaceConditions   = conditions,
                    RaceConditionsId = conditions.RaceConditionsId, //when this is a new racecondition, this id is not being populated into the table, so we're forcing it
                    Tag   = tag,
                    TagId = tag.TagId,
                    Count = 1
                };
                db.RaceConditionTags.Add(rcTag); //add the rc tag to the database
                //persistedList.Add(rcTag); //relate the rc tag to the condition-specific-list
                //tag.RaceConditionTags.Add(rcTag);
            }

            db.SaveChanges();
        }
Exemplo n.º 8
0
        private void IncrementTagCount(RaceConditions conditions, List <int> tagIds)
        {
            if (tagIds == null)
            {
                return;
            }


            foreach (var id in tagIds)
            {
                Tag tag = db.Tags.Find(id);
                RaceConditionTag rcTag;
                switch (tag.Type)
                {
                case TagType.SwimLayout:
                    rcTag = conditions.SwimLayout.Find(t => t.TagId == id);
                    break;

                case TagType.SwimMedium:
                    rcTag = conditions.SwimMedium.Find(t => t.TagId == id);
                    break;

                case TagType.SwimWeather:
                    rcTag = conditions.SwimWeather.Find(t => t.TagId == id);
                    break;

                case TagType.SwimOther:
                    rcTag = conditions.SwimOther.Find(t => t.TagId == id);
                    break;

                case TagType.BikeLayout:
                    rcTag = conditions.BikeLayout.Find(t => t.TagId == id);
                    break;

                case TagType.BikeMedium:
                    rcTag = conditions.BikeMedium.Find(t => t.TagId == id);
                    break;

                case TagType.BikeWeather:
                    rcTag = conditions.BikeWeather.Find(t => t.TagId == id);
                    break;

                case TagType.BikeOther:
                    rcTag = conditions.BikeOther.Find(t => t.TagId == id);
                    break;

                case TagType.RunLayout:
                    rcTag = conditions.RunLayout.Find(t => t.TagId == id);
                    break;

                case TagType.RunMedium:
                    rcTag = conditions.RunMedium.Find(t => t.TagId == id);
                    break;

                case TagType.RunWeather:
                    rcTag = conditions.RunWeather.Find(t => t.TagId == id);
                    break;

                case TagType.RunOther:
                    rcTag = conditions.RunOther.Find(t => t.TagId == id);
                    break;

                default:
                    throw new Exception("Tag Condition not found");
                }
                if (rcTag == null) //a new tag added by user
                {
                    rcTag = new RaceConditionTag
                    {
                        RaceConditions   = conditions,
                        RaceConditionsId = conditions.RaceConditionsId, //when this is a new racecondition, this id is not being populated into the table, so we're forcing it
                        Tag   = tag,
                        TagId = tag.TagId,
                        Count = 1
                    };
                    switch (tag.Type)
                    {
                    case TagType.SwimLayout:
                        conditions.SwimLayout.Add(rcTag);
                        break;

                    case TagType.SwimMedium:
                        conditions.SwimMedium.Add(rcTag);
                        break;

                    case TagType.SwimWeather:
                        conditions.SwimWeather.Add(rcTag);
                        break;

                    case TagType.SwimOther:
                        conditions.SwimOther.Add(rcTag);
                        break;

                    case TagType.BikeLayout:
                        conditions.BikeLayout.Add(rcTag);
                        break;

                    case TagType.BikeMedium:
                        conditions.BikeMedium.Add(rcTag);
                        break;

                    case TagType.BikeWeather:
                        conditions.BikeWeather.Add(rcTag);
                        break;

                    case TagType.BikeOther:
                        conditions.BikeOther.Add(rcTag);
                        break;

                    case TagType.RunLayout:
                        conditions.RunLayout.Add(rcTag);
                        break;

                    case TagType.RunMedium:
                        conditions.RunMedium.Add(rcTag);
                        break;

                    case TagType.RunWeather:
                        conditions.RunWeather.Add(rcTag);
                        break;

                    case TagType.RunOther:
                        conditions.RunOther.Add(rcTag);
                        break;

                    default:
                        throw new Exception("Tag Condition not found");
                    }

                    db.RaceConditionTags.Add(rcTag);
                }
                else
                {
                    rcTag.Count += 1;
                }


                db.SaveChanges();
            }
        }