public RaceViewModel GetRaceViewModel(int?mazeId, int userId)
        {
            var model = new RaceViewModel();

            if (mazeId != null)  // retrieve data from DB
            {
                var maze = DataAccessLayer.Mazes.FirstOrDefault(mz => mz.Id == mazeId.Value);

                if (maze == null)
                {
                    return(model);
                }

                model.MazeHash = maze.Hash;
                model.MazeId   = maze.Id;
                model.UserId   = userId;
                model.RaceDate = new DateTime();
            }
            else // tell view to build new maze client-side
            {
                model.UserId   = userId;
                model.RaceDate = new DateTime();
            }

            return(model);
        }
示例#2
0
        public async Task GetRaces()
        {
            IsRefreshing = true;

            Races.Clear();

            string url = "http://itweb.fvtc.edu/wetzel/marathon/races/";
            string json;

            using (System.Net.WebClient webClient = new System.Net.WebClient())
            {
                json = await webClient.DownloadStringTaskAsync(url);
            }

            GetRacesApiResult result =
                Newtonsoft.Json.JsonConvert.DeserializeObject <GetRacesApiResult>(json);

            foreach (Race race in result.races)
            {
                RaceViewModel vm = new RaceViewModel(this.Navigation)
                {
                    Race = race
                };

                this.Races.Add(vm);
            }

            IsRefreshing = false;
        }
        private void ExportRace(RaceViewModel raceViewModel)
        {
            Microsoft.Win32.SaveFileDialog saveFileDialog = new Microsoft.Win32.SaveFileDialog();
            saveFileDialog.Filter   = "XML Document|*.xml";
            saveFileDialog.Title    = "Save Race";
            saveFileDialog.FileName = raceViewModel.Name;

            if (saveFileDialog.ShowDialog() == true)
            {
                try
                {
                    string ext = System.IO.Path.GetExtension(saveFileDialog.FileName);

                    if (ext == ".xml")
                    {
                        string xml = _xmlExporter.FormatXMLWithHeader(_xmlExporter.GetXML(raceViewModel.RaceModel));
                        System.IO.File.WriteAllText(saveFileDialog.FileName, xml, System.Text.Encoding.UTF8);
                    }
                    else
                    {
                        _dialogService.ShowConfirmationDialog("Unable To Export", "Invalid file extension.", "OK", null, null);
                    }
                }
                catch (Exception)
                {
                    _dialogService.ShowConfirmationDialog("Unable To Export", "An error occurred when attempting to export the race.", "OK", null, null);
                }
            }
        }
示例#4
0
        private async Task <SaveResult> ManageExistingRaceOrganisation(RaceViewModel model,
                                                                       ICollection <RaceOrganisation> currentEntityList,
                                                                       IQueryable <Organisation> roleAppPage)
        {
            SaveResult saveResult = new SaveResult
            {
                IsSuccess = true
            };

            List <RaceOrganisation> assignedRaceOrganisations = new List <RaceOrganisation>();

            foreach (var record in currentEntityList)
            {
                if (saveResult.IsSuccess)
                {
                    if (!model.OrganisationIds.Any(a => a == record.OrganisationId))
                    {
                        var deleteRaceOrganisation = await _context.RaceOrganisation.FindAsync(record.Id);

                        if (saveResult.IsSuccess)
                        {
                            _context.Remove(deleteRaceOrganisation);
                            await _context.SaveChangesAsync();

                            saveResult.IsSuccess = true;
                        }
                    }
                    else
                    {
                        saveResult = await EditEntityAsync(model, record);
                    }
                }
            }
            return(saveResult);
        }
示例#5
0
        private async Task <bool> AddRaceOrganisationWherePreviousExists(RaceViewModel model,
                                                                         ICollection <RaceOrganisation> RaceOrganisations,
                                                                         IQueryable <Organisation> regions)
        {
            bool isSaveSuccess = true;
            List <RaceOrganisation> assignedRaceOrganisations = new List <RaceOrganisation>();

            foreach (var recordId in model.OrganisationIds)
            {
                var currentRolePermission = regions.Where(a => a.Id == recordId).FirstOrDefault();
                if (currentRolePermission != null)
                {
                    if (!RaceOrganisations.Any(a => a.OrganisationId == recordId))
                    {
                        // var currentUserRoleID = currentMenuRoles.First(a => a.Organisation.RoleID == currentRolePermission.RoleID).RegionID;
                        var RaceOrganisationRepo = new RaceOrganisation();
                        assignedRaceOrganisations.Add(RaceOrganisationRepo.ToEntity(recordId, model.Id, model.SessionUserId));
                    }
                }
            }

            if (assignedRaceOrganisations.Count > 0)
            {
                await _context.RaceOrganisation.AddRangeAsync(assignedRaceOrganisations);

                await _context.SaveChangesAsync();

                isSaveSuccess = true;
            }

            return(isSaveSuccess);
        }
示例#6
0
        private void btnStart_Click(object sender, EventArgs e)
        {
            if (RunnerViewModel.Runners.Count > 0)
            {
                txtLapCount.Enabled     = false;
                txtLapLenght.Enabled    = false;
                txtReward.Enabled       = false;
                txtRunnerNumber.Enabled = true;
                btnLapFinished.Enabled  = true;
                btnStart.Enabled        = false;
            }
            else
            {
                MessageBox.Show("you dont have runners");
                return;
            }
            RaceViewModel = new RaceViewModel(RunnerViewModel);

            finishedLapBindingSource.DataSource = RaceViewModel.LapGridData;
            resultBindingSource.DataSource      = RaceViewModel.RaceGridData;


            RaceViewModel.Race.RaceDate = DateTime.Now;

            RaceViewModel.Race.LapCount  = GetIntInput(txtLapCount.Text);
            RaceViewModel.Race.LapLenght = GetIntInput(txtLapLenght.Text);

            lblTime.Text    = RaceViewModel.Race.RaceDate.ToLongTimeString();
            lblTime.Visible = true;
            RaceViewModel.RaceStart(RaceViewModel.Race.RaceDate);
        }
示例#7
0
        // PUT api/<controller>/5
        public HttpResponseMessage Put(RaceViewModel viewModel)
        {
            try
            {
                if (ModelState.IsValid)
                {
                    var race     = _raceService.GetRace(viewModel.Id);
                    var raceType = _raceTypeService.GetRaceType(viewModel.RaceTypeId);

                    race.Name       = viewModel.Name;
                    race.RaceLength = viewModel.RaceLength;
                    race.RaceType   = raceType;
                    _raceService.SaveRace(race);

                    return(Request.CreateResponse(HttpStatusCode.OK));
                }
                else
                {
                    return(Request.CreateErrorResponse(HttpStatusCode.InternalServerError, "Invalid Model"));
                }
            }
            catch (Exception ex)
            {
                return(Request.CreateErrorResponse(HttpStatusCode.InternalServerError, ex.Message));
            }
        }
示例#8
0
        public void Test_That_OrderBy_Ascending_PrintFunction()
        {
            List <RaceViewModel> model = new List <RaceViewModel>();
            var n1 = new RaceViewModel
            {
                Name  = "sean",
                Price = "11"
            };
            var n2 = new RaceViewModel
            {
                Name  = "john",
                Price = "12"
            };
            var n3 = new RaceViewModel
            {
                Name  = "garry",
                Price = "13"
            };

            model.Add(n1);
            model.Add(n2);
            model.Add(n3);

            PrintNames p        = new PrintNames();
            ArrayList  actual   = p.Print(model);
            ArrayList  expected = new ArrayList {
                "sean", "john", "garry"
            };

            Assert.Equal(actual, expected);
        }
示例#9
0
        public ActionResult Edit(RaceViewModel raceViewModel)
        {
            //ValdateState(stateViewModel);

            if (ModelState.IsValid)
            {
                using (var context = new Context())
                {
                    var race = context.Races.SingleOrDefault(p => p.Id == raceViewModel.Id);

                    if (race != null)
                    {
                        race.Name       = raceViewModel.Name;
                        race.Date       = raceViewModel.Date;
                        race.RaceTypeId = raceViewModel.RaceTypeId;
                        race.Address    = raceViewModel.Address;
                        race.City       = raceViewModel.City;
                        race.StateId    = raceViewModel.StateId;
                        race.ZipCode    = raceViewModel.ZipCode;
                        race.Profit     = raceViewModel.Profit;

                        TempData["Message"] = "This race was successfully updated!";
                        context.SaveChanges();
                        return(RedirectToAction("Index"));
                    }
                    ;
                }
            }
            return(View(raceViewModel));
        }
示例#10
0
        //Detail
        public ActionResult Detail(int id)
        {
            //ViewBag.Title = "Detail";
            using (var context = new Context())
            {
                //var restaurant = lunchContext.Restaurants.SingleOrDefault(p => p.RestaurantId == id);
                var race = context.Races.Include("State").Include("RaceType").SingleOrDefault(p => p.Id == id);
                if (race != null)
                {
                    var raceViewModel = new RaceViewModel
                    {
                        Id           = race.Id,
                        Name         = race.Name,
                        Profit       = race.Profit,
                        Address      = race.Address,
                        City         = race.City,
                        DateString   = race.Date.ToShortDateString(),
                        StateId      = race.StateId,
                        RaceTypeId   = race.RaceTypeId,
                        StateName    = race.State.Name,
                        RaceTypeName = race.RaceType.Name,
                        ZipCode      = race.ZipCode
                    };

                    ViewBag.Title = "Detail: " + raceViewModel.Name;
                    return(View(raceViewModel));
                }
            }
            return(new HttpNotFoundResult());
        }
示例#11
0
        public ActionResult Add(RaceViewModel raceViewModel)
        {
            if (ModelState.IsValid)
            {
                using (var context = new Context())
                {
                    var race = new Race
                    {
                        Name       = raceViewModel.Name,
                        Date       = raceViewModel.Date,
                        RaceTypeId = raceViewModel.RaceTypeId,
                        Address    = raceViewModel.Address,
                        City       = raceViewModel.City,
                        StateId    = raceViewModel.StateId,
                        ZipCode    = raceViewModel.ZipCode,
                        Profit     = raceViewModel.Profit
                    };

                    context.Races.Add(race);
                    context.SaveChanges();
                }

                TempData["Message"] = "Your race was successfully added!";
                return(RedirectToAction("Index"));
            }

            ViewBag.SelectRaceType = new SelectList(
                _context.RaceTypes, "Id", "Name");

            ViewBag.SelectState = new SelectList(
                _context.States, "Id", "Name");

            return(View("AddEdit", raceViewModel));
        }
示例#12
0
        public ActionResult Edit(int id)
        {
            using (var context = new Context())
            {
                var race = context.Races.SingleOrDefault(p => p.Id == id);
                if (race != null)
                {
                    var raceViewModel = new RaceViewModel
                    {
                        Id         = race.Id,
                        Name       = race.Name,
                        Date       = race.Date,
                        RaceTypeId = race.RaceTypeId,
                        Address    = race.Address,
                        City       = race.City,
                        StateId    = race.StateId,
                        ZipCode    = race.ZipCode,
                        Profit     = race.Profit
                    };

                    ViewBag.SelectRaceType = new SelectList(
                        _context.RaceTypes, "Id", "Name");

                    ViewBag.SelectState = new SelectList(
                        _context.States, "Id", "Name");

                    return(View("AddEdit", raceViewModel));
                }
            }
            return(new HttpNotFoundResult());
        }
示例#13
0
        private async Task <bool> AddEntity(RaceViewModel model,
                                            ICollection <RaceOrganisation> raceOrganisations,
                                            IQueryable <Organisation> regions)
        {
            bool isSaveSuccess = true;
            List <RaceOrganisation> RaceOrganisationList = new List <RaceOrganisation>();

            foreach (var record in model.OrganisationIds)
            {
                var currentRolePermission = regions.Any(a => a.Id == record);
                if (currentRolePermission)
                {
                    RaceOrganisation raceOrganisation = new RaceOrganisation();
                    RaceOrganisationList.Add(raceOrganisation.ToEntity(record, model.Id, model.SessionUserId));
                }
            }

            if (RaceOrganisationList.Count > 0)
            {
                await _context.RaceOrganisation.AddRangeAsync(RaceOrganisationList);

                await _context.SaveChangesAsync();

                isSaveSuccess = true;
            }

            return(isSaveSuccess);
        }
示例#14
0
        private void SelectPrevious()
        {
            if (_races.Any())
            {
                RaceListItemViewModel selected = _races.FirstOrDefault(x => x.IsSelected);

                foreach (RaceListItemViewModel race in _races)
                {
                    race.IsSelected = false;
                }

                if (selected == null)
                {
                    _races[_races.Count - 1].IsSelected = true;
                    _selectedRace = new RaceViewModel(_races[_races.Count - 1].RaceModel);
                }
                else
                {
                    int index = Math.Max(_races.IndexOf(selected) - 1, 0);
                    _races[index].IsSelected = true;
                    _selectedRace            = new RaceViewModel(_races[index].RaceModel);
                }

                OnPropertyChanged(nameof(SelectedRace));
            }
        }
示例#15
0
        private void EditRace(RaceViewModel race)
        {
            _editRaceXML = race.XML;

            OnPropertyChanged(nameof(EditingRaceXML));
            OnPropertyChanged(nameof(IsEditingRace));
        }
示例#16
0
        public ActionResult Edit(int?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }

            Race race = db.Races.Include(c => c.Category).SingleOrDefault(c => c.Id == id);

            if (race == null)
            {
                return(HttpNotFound());
            }
            var raceVM = new RaceViewModel();

            raceVM.Categories = lesCategoriesDispo;
            raceVM.Race       = race;

            if (race.Category != null)
            {
                // Si la course avait une catégorie, on affecte l'Id de cette catégorie à notre ViewModel, ansi elle sera préselectionnée dans notre liste de catégories
                raceVM.IdSelectedCategory = race.Category.Id;
            }
            return(View(raceVM));
        }
示例#17
0
        private async Task <SaveResult> ManageExistingRaceDistance(RaceViewModel model,
                                                                   ICollection <RaceDistance> currentEntityList,
                                                                   IQueryable <Distance> distance)
        {
            SaveResult saveResult = new SaveResult
            {
                IsSuccess = true
            };

            List <RaceDistance> assignedRaceDistances = new List <RaceDistance>();

            foreach (var record in currentEntityList)
            {
                if (saveResult.IsSuccess)
                {
                    //if (!model.DistanceIds.Any(a => a == record.DistanceId))
                    //{
                    //    var deleteRaceDistance = await _context.RaceDistance.FindAsync(record.Id);

                    //    if (saveResult.IsSuccess)
                    //    {
                    //         _context.Remove(deleteRaceDistance);
                    //        await _context.SaveChangesAsync();
                    //        saveResult.IsSuccess = true;
                    //    }
                    //}
                    //else
                    //{
                    //    saveResult = await EditEntityAsync(model, record);
                    //}

                    for (int row = 0; row < model.DistanceIds.Count(); row++)
                    {
                        if (model.DistanceIds[row] == record.DistanceId)
                        {
                            if (model.EventDateTimes[row] == null)
                            {
                                var deleteRaceDistance = await _context.RaceDistance.FindAsync(record.Id);

                                if (saveResult.IsSuccess)
                                {
                                    _context.Remove(deleteRaceDistance);
                                    await _context.SaveChangesAsync();

                                    saveResult.IsSuccess = true;
                                }
                            }
                            else
                            {
                                record.EventDate = (DateTime)model.EventDateTimes[row];
                                saveResult       = await EditEntityAsync(model, record);
                            }
                        }
                    }
                }
            }
            return(saveResult);
        }
        public async Task <IActionResult> Race(int year)
        {
            var viewModel = new RaceViewModel
            {
                Race = await this.context.Races.SingleAsync(x => x.Date.Year == year)
            };

            return(View(viewModel));
        }
        public ActionResult Index()
        {
            var races = raceRepository.GetRaces();

            var viewModel = new List <RaceViewModel>();

            races.ForEach(r => viewModel.Add(RaceViewModel.RaceViewModelCreation(r)));

            return(View(viewModel));
        }
示例#20
0
        private RaceViewModel Map(Race race)
        {
            var viewModel = new RaceViewModel();

            viewModel.Id         = race.Id;
            viewModel.Name       = race.Name;
            viewModel.RaceLength = race.RaceLength;
            viewModel.RaceTypeId = race.RaceType.Id;
            return(viewModel);
        }
示例#21
0
        public ActionResult Create()
        {
            // création du ViewModel nécessaire pour porter la liste des catégories et l'id de la categorie choisie en plus de la course
            var raceVM = new RaceViewModel();

            raceVM.Categories = lesCategoriesDispo;
            raceVM.lesPoisVM  = db.Pois.ToList();

            return(View(raceVM));
        }
示例#22
0
 public static Race ToDomainModel(this RaceViewModel race)
 {
     return(new Race
     {
         Id = race.RaceId,
         FlawInformation = race.FlawInformation.Select(f => f.ToDomainModel()).ToList(),
         FeatureInformation = race.FeatureInformation.Select(f => f.ToDomainModel()).ToList(),
         Name = race.Name,
         Description = race.Description
     });
 }
示例#23
0
        public IActionResult RaceResults(string year)
        {
            List <RaceViewModel> files    = new List <RaceViewModel>();
            List <Track>         Schedule = new Schedule().LoadSchedule(year);

            string[] race_files = Directory.GetFiles("Data/" + year + "/RaceResults");

            int count = 1;

            foreach (string race in race_files)
            {
                var new_race = new RaceViewModel();

                new_race.RaceNum = count.ToString();
                new_race.Name    = Schedule.Where(t => t.RaceNum == count).First().RaceName.ToString();
                new_race.Link    = race;
                new_race.Track   = Schedule.Where(t => t.RaceNum == count).First().Name;
                new_race.Year    = year;

                string csv_file = "./Data/" + year + "/csv/" + Path.GetFileNameWithoutExtension(race) + ".csv";

                var csvTable = new DataTable();
                using (var csvReader = new CsvReader(new StreamReader(System.IO.File.OpenRead(csv_file)), true))
                {
                    csvTable.Load(csvReader);

                    for (int i = 0; i < csvTable.Rows.Count; i++)
                    {
                        if (csvTable.Rows[i][1].ToString() == "1")
                        {
                            new_race.Pole = csvTable.Rows[i][3].ToString();
                        }

                        if (csvTable.Rows[i][0].ToString() == "1")
                        {
                            new_race.Winner = csvTable.Rows[i][3].ToString();
                        }

                        if (new_race.Pole != null && new_race.Winner != null)
                        {
                            break;
                        }
                    }

                    files.Add(new_race);
                }

                count++;
            }

            ViewBag.Year = year;
            return(View(files));
        }
示例#24
0
        private async Task <bool> AddRaceDistanceWherePreviousExists(RaceViewModel model,
                                                                     ICollection <RaceDistance> RaceDistances,
                                                                     IQueryable <Distance> distances)
        {
            bool isSaveSuccess = true;
            List <RaceDistance> assignedRaceDistances = new List <RaceDistance>();

            //foreach (var recordId in model.DistanceIds)
            //{

            //    var currentRolePermission = distances.Where(a => a.Id == recordId).FirstOrDefault();
            //    if (currentRolePermission != null)
            //    {

            //        if (!RaceDistances.Any(a => a.DistanceId == recordId))
            //        {
            //            // var currentUserRoleID = currentMenuRoles.First(a => a.Distance.RoleID == currentRolePermission.RoleID).RegionID;
            //            var RaceDistanceRepo = new RaceDistance();
            //            //assignedRaceDistances.Add(RaceDistanceRepo.ToEntity(recordId, model.Id, model.SessionUserId));
            //        }
            //    }


            //}

            for (int row = 0; row < model.DistanceIds.Count(); row++)
            {
                if (model.EventDateTimes[row] != null)
                {
                    var currentDistance = distances.Where(a => a.Id == model.DistanceIds[row]).FirstOrDefault();
                    if (currentDistance != null)
                    {
                        if (!RaceDistances.Any(a => a.DistanceId == model.DistanceIds[row]))
                        {
                            var RaceDistanceRepo = new RaceDistance();
                            assignedRaceDistances.Add(RaceDistanceRepo.ToEntity((int)model.DistanceIds[row], model.Id, (DateTime)model.EventDateTimes[row], model.SessionUserId));
                        }
                    }
                }
            }


            if (assignedRaceDistances.Count > 0)
            {
                await _context.RaceDistance.AddRangeAsync(assignedRaceDistances);

                await _context.SaveChangesAsync();

                isSaveSuccess = true;
            }

            return(isSaveSuccess);
        }
示例#25
0
        public async Task <SaveResult> SaveEntityList(RaceViewModel model, Race parentEntity)
        {
            SaveResult saveResult = new SaveResult();

            List <int> organisationIds = new List <int>
            {
                model.OrganisationId
            };

            model.OrganisationIds = organisationIds;

            var currentEntities = parentEntity.RaceOrganisations;

            if (model.OrganisationIds == null)
            {
                if (currentEntities.Any())
                {
                    var RaceOrganisationIds = currentEntities.ToList().ToList().Select(b => b.Id);

                    var toDeleteList = _context.RaceOrganisation.Where(a => RaceOrganisationIds.Contains(a.Id));

                    _context.RaceOrganisation.RemoveRange(toDeleteList);
                    await _context.SaveChangesAsync();

                    saveResult.IsSuccess = true;
                }
                else
                {
                    saveResult.IsSuccess = true;
                }
            }
            else
            {
                var regions = _context.Organisation.Where(a => model.OrganisationIds.Contains(a.Id));

                if (currentEntities.Any())
                {
                    saveResult.IsSuccess = await AddRaceOrganisationWherePreviousExists(model, currentEntities, regions);

                    if (saveResult.IsSuccess)
                    {
                        saveResult = await ManageExistingRaceOrganisation(model, currentEntities, regions);
                    }
                }
                else
                {
                    saveResult.IsSuccess = await AddEntity(model, currentEntities, regions);
                }
            }


            return(saveResult);
        }
示例#26
0
        public ActionResult FinalRace(RaceViewModel model)
        {
            OSUSurvey  survey   = db.Surveys.Find(model.SurveyID);
            SettingSet settings = db.SettingSets.Find(survey.SettingsID);
            Race       race     = db.Races.FirstOrDefault(x => x.SettingSetID == survey.SettingsID && x.RaceNum == settings.NumberOfRaces);

            survey.PointTotal = model.AfterPoints;

            db.Entry(survey).State = EntityState.Modified;
            db.SaveChanges();

            return(RedirectToAction("FollowUpIntroduction", new { id = model.SurveyID }));
        }
示例#27
0
        private async Task <SaveResult> EditEntityAsync(RaceViewModel model, RaceDistance record)
        {
            var saveResult       = new SaveResult();
            var editRaceDistance = await _context.RaceDistance.FindAsync(record.Id);

            // editRaceDistance.ToEntity(record.DistanceId, model.Id, model.SessionUserId);

            _context.Update(editRaceDistance);
            await _context.SaveChangesAsync();

            saveResult.IsSuccess = true;
            return(saveResult);
        }
示例#28
0
        public IActionResult Delete([FromRoute] int id, RaceViewModel model)
        {
            if (ModelState.IsValid)
            {
                _raceRepository.Delete(id);

                return(RedirectToAction("/Index"));
            }

            ModelState.AddModelError("", "Errore generico");

            return(View(model));
        }
示例#29
0
        public void ViewModelToModelTest()
        {
            var viewModel = new RaceViewModel
            {
                Name   = "a",
                RaceId = Guid.NewGuid()
            };

            var result = _Sut.Map <Race>(viewModel);

            Assert.AreEqual(viewModel.Name, result.Name);
            Assert.AreEqual(viewModel.RaceId, result.RaceId);
        }
示例#30
0
        private async Task <SaveResult> EditEntityAsync(RaceViewModel model, RaceOrganisation record)
        {
            var saveResult           = new SaveResult();
            var editRaceOrganisation = await _context.RaceOrganisation.FindAsync(record.Id);

            editRaceOrganisation.ToEntity(record.OrganisationId, model.Id, model.SessionUserId);

            _context.Update(editRaceOrganisation);
            await _context.SaveChangesAsync();

            saveResult.IsSuccess = true;
            return(saveResult);
        }