public async Task <IActionResult> NewDateTime(int?id, [Bind("DateTime,EventTypeName,EventDescription")] CritterExEditViewModel model) { if (id == null) { throw new Exception("ID isn't being passed."); } using (var transact = await this._livestock.Database.BeginTransactionAsync()) { var dateTime = new CritterLifeEventDatetime { Comment = "N/A", DateTime = model.DateTime.DateTime, VersionNumber = 1 }; await this._livestock.AddAsync(dateTime); await this._livestock.SaveChangesAsync(); // We have to save here so dateTime gets an Id try { await this.AddNewEvent(id.Value, dateTime.CritterLifeEventGiveBirthId, model.EventTypeName, model.EventDescription); transact.Commit(); } catch (OnlyOneEventAllowedException) { transact.Rollback(); } } return(RedirectToAction(nameof(CritterExController.Edit), "CritterEx", new { id })); }
public async Task <IActionResult> Edit(int id, [Bind("Critter,YesReproduceUser")] CritterExEditViewModel model) { if (model.Critter.CritterId != id) { return(NotFound()); } if (ModelState.IsValid) { // Update reproduce flags model.Critter.UpdateFlag(CritterFlags.ReproduceYesUser, model.YesReproduceUser); // Update Database model try { this._livestock.Update(model.Critter); await this._livestock.SaveChangesAsync(); } catch (DbUpdateConcurrencyException) { if (!this._livestock.Critter.Any(c => c.CritterId == model.Critter.CritterId)) { return(NotFound()); } else { return(RedirectToAction("Edit", "CritterEx", new { id, concurrencyError = true })); } } catch { throw; } return(RedirectToAction(nameof(Index))); } this.SetupCritterViewData(model.Critter); return(View(model)); }