public IActionResult AddBeer(AddBeerVM vm) { TapRoom tapRoom = _dal.TapRooms.Where(x => x.Id == vm.TapRoomId).Include(x => x.Beers).Include(x => x.SeasonMember).ThenInclude(x => x.Season).FirstOrDefault(); if (tapRoom.UserId != _session.UserId) { return(Json(new { ErrorMessage = "Unauthorized" })); } DataValidationResult validationResult = TapRoomValidator.AddBeerValidator(vm, tapRoom); if (!validationResult.IsValid) { return(Json(new { ErrorMessage = validationResult.ErrorMessages.First() })); } Beer beer = new Beer() { TapRoomId = vm.TapRoomId, BeerName = vm.BeerName, BreweryName = vm.BreweryName, StyleName = vm.StyleName, StyleFamily = vm.StyleFamily, UntappdId = vm.UntappdId }; _dal.Beers.Add(beer); _dal.SaveChanges(); return(Json(new { })); }
public static DataValidationResult AddBeerValidator(AddBeerVM vm, TapRoom tapRoom) { DataValidationResult result = new DataValidationResult(); if (tapRoom == null) { result.ErrorMessages.Add("Tap Room Not Found"); } else if (tapRoom.Beers.Count >= tapRoom.League.MaxRosterSize) { result.ErrorMessages.Add("Your Keg Storage is Full"); } else if (DateTime.Now < tapRoom.Season?.WaiverStartDate && DateTime.Now > tapRoom.Season?.WaiverEndDate) { result.ErrorMessages.Add("Waivers are not currently being accepted for the Season"); } result.IsValid = !result.ErrorMessages.Any(); return(result); }