public ContestDetailsDTO editContest(int id, ContestDetailsDTO newContest)
        {
            ContestType contestType = context.ContestType.Where(ct => ct.ContestTypeId == id).FirstOrDefault();

            if (contestType == null)
            {
                throw new AppException("Nie odnaleziono konkursu w bazie");
            }
            Contest contest = context.Contest.Where(c => c.ContestTypeId == id).FirstOrDefault();

            contestType.NamePolish = newContest.name;
            contestType.Enterable  = newContest.isEnterable;
            if (contest != null)
            {
                contest.PlaceId   = newContest.placeId;
                contest.StartDate = newContest.startDate;
                contest.EndDate   = newContest.endDate;
            }
            context.SaveChanges();
            return(getContest(id));
        }
        public IActionResult editContest(int id, [FromBody] ContestDetailsDTO newContest)
        {
            var claimsIdentity = this.User.Identity as ClaimsIdentity;

            try
            {
                userService.IsUserAnOrganizator(claimsIdentity);
                if (!appSettingsService.canEnter())
                {
                    throw new AppException("Akcja obecnie niedozwolona");
                }

                var response = contestService.editContest(id, newContest);
                if (response == null)
                {
                    throw new AppException("Błąd edycji konkursu");
                }
                return(Ok());
            }
            catch (Exception e)
            {
                return(BadRequest(new { message = e.Message }));
            }
        }
        public ContestDetailsDTO getContest(int id)
        {
            ContestDetailsDTO contestDetails;
            ContestType       contestType = context.ContestType.Where(ct => ct.ContestTypeId == id).FirstOrDefault();

            if (contestType == null)
            {
                throw new AppException("Nie odnaleziono konkursu o podanym id");
            }

            List <BreedInfoDTO>         allowedBreeds = new List <BreedInfoDTO>();
            List <AllowedBreedsContest> allowed       = context.AllowedBreedsContest.Where(abc => abc.ContestTypeId == id).ToList();

            foreach (AllowedBreedsContest abc in allowed)
            {
                DogBreed breed = context.DogBreed.Where(db => db.BreedId == abc.BreedTypeId).FirstOrDefault();
                allowedBreeds.Add(new BreedInfoDTO
                {
                    breedId = abc.BreedTypeId,
                    name    = breed.NamePolish
                });
            }

            List <ParticipationInfoDTO> participations = new List <ParticipationInfoDTO>();
            List <Participation>        part           = context.Participation.Where(p => p.ContestId == id).ToList();

            foreach (Participation p in part)
            {
                Dog      dog    = context.Dog.Where(d => d.DogId == p.DogId).FirstOrDefault();
                DogBreed breed  = context.DogBreed.Where(db => db.BreedId == dog.BreedId).FirstOrDefault();
                Grade    grade  = context.Grade.Where(g => g.GradeId == p.GradeId).FirstOrDefault();
                DogClass classD = context.DogClass.Where(c => c.ClassId == dog.ClassId).FirstOrDefault();
                string   place  = (p.Place == null) ? "Nie przyznano" : p.Place.ToString();
                if (grade == null)
                {
                    participations.Add(new ParticipationInfoDTO
                    {
                        participationId = p.ParticipationId,
                        dogId           = p.DogId,
                        name            = dog.Name,
                        breedName       = breed.NamePolish,
                        className       = classD.NamePolish,
                        chipNumber      = dog.ChipNumber,
                        gradeId         = 0,
                        grade           = "Nie oceniono",
                        place           = place,
                        description     = p.Description
                    });
                }
                else
                {
                    participations.Add(new ParticipationInfoDTO
                    {
                        participationId = p.ParticipationId,
                        dogId           = p.DogId,
                        name            = dog.Name,
                        breedName       = breed.NamePolish,
                        className       = classD.NamePolish,
                        chipNumber      = dog.ChipNumber,
                        gradeId         = grade.GradeId,
                        grade           = grade.NamePolish,
                        place           = place,
                        description     = p.Description
                    });
                }
            }

            Contest contest = context.Contest.Where(c => c.ContestTypeId == id).FirstOrDefault();

            if (contest == null)
            {
                contestDetails = new ContestDetailsDTO
                {
                    contestTypeId = contestType.ContestTypeId,
                    contestId     = -1,
                    name          = contestType.NamePolish,
                    isEnterable   = Convert.ToBoolean(contestType.Enterable),
                    placeId       = -1,
                    placeName     = null,
                    startDate     = new DateTime(),
                    endDate       = new DateTime(),
                    allowedBreeds = allowedBreeds,
                    participants  = participations
                };
            }
            else
            {
                Place place = context.Place.Where(p => p.PlaceId == contest.PlaceId).FirstOrDefault();
                contestDetails = new ContestDetailsDTO
                {
                    contestTypeId = contestType.ContestTypeId,
                    contestId     = contest.ContestId,
                    name          = contestType.NamePolish,
                    isEnterable   = Convert.ToBoolean(contestType.Enterable),
                    placeId       = contest.PlaceId,
                    placeName     = place.Name,
                    startDate     = contest.StartDate,
                    endDate       = contest.EndDate,
                    allowedBreeds = allowedBreeds,
                    participants  = participations
                };
            }
            return(contestDetails);
        }