Esempio n. 1
0
        public ActionResult <IEnumerable <DataGracz> > Get(int idMecz, int idDruzyna)
        {
            var mecz = _DataAccess.GetItem <DataMecz>(idMecz);

            if (mecz == null)
            {
                return(NotFound());
            }

            var druzyna = _DataAccess.GetItem <DataDruzyna>(idDruzyna);

            if (druzyna == null)
            {
                return(NotFound());
            }

            var raport = _DataAccess.GetAll <DataRaport>().FirstOrDefault(r => r.Mecz == mecz);

            if (raport == null)
            {
                raport = new DataRaport()
                {
                    Mecz = mecz,
                };
                _DataAccess.AddItem(raport);
                raport = _DataAccess.GetAll <DataRaport>().FirstOrDefault(r => r.Mecz == mecz);
            }

            var zawodnicy = _DataAccess.GetAll <DataZawodnik>().Where(z => z.Druzyna == druzyna)
                            .ToList();

            if (!zawodnicy.Any())
            {
                return(NotFound());
            }

            var gracze = GetOrCreateDataGraczes(zawodnicy, raport);

            return(Ok(gracze));
        }
Esempio n. 2
0
        private IEnumerable <DataGracz> GetOrCreateDataGraczes(List <DataZawodnik> zawodnicy,
                                                               DataRaport raport)
        {
            var gracze = _DataAccess.GetAll <DataGracz>()
                         .Where(g => g.Raport == raport && zawodnicy.Contains(g.Zawodnik));

            var graczeList = gracze.ToList();

            if (graczeList.Count == zawodnicy.Count)
            {
                return(graczeList);
            }

            List <DataZawodnik> missing = zawodnicy.Where(
                z => graczeList.All(g => g.Zawodnik != z)
                ).ToList();

            graczeList = new List <DataGracz>(missing.Count);
            foreach (var dataZawodnik in missing)
            {
                graczeList.Add(new DataGracz()
                {
                    Pozycja  = dataZawodnik.Pozycja,
                    Raport   = raport,
                    Zawodnik = dataZawodnik,
                });
            }

            foreach (var gracz in graczeList)
            {
                _DataAccess.AddItem(gracz);
            }

            return(_DataAccess.GetAll <DataGracz>()
                   .Where(g => g.Raport == raport && zawodnicy.Contains(g.Zawodnik)));
        }