public async Task <IActionResult> Edit(int id, [Bind("CritterLifeEventId,Comment,CritterId,DateTime,Description,EnumCritterLifeEventDataId,EnumCritterLifeEventTypeId,Timestamp,VersionNumber")] CritterLifeEvent val) { if (val.CritterLifeEventId != id) { return(NotFound()); } this.FixNullFields(val); if (ModelState.IsValid) { try { _context.Update(val); await _context.SaveChangesAsync(); } catch (DbUpdateConcurrencyException) { if (!Exists(val.CritterLifeEventId)) { return(NotFound()); } else { throw; } } return(RedirectToAction(nameof(Index))); } ViewData["CritterId"] = new SelectList(_context.Critter, "CritterId", "CritterImageId", val.CritterId); ViewData["EnumCritterLifeEventTypeId"] = new SelectList(_context.EnumCritterLifeEventType, "EnumCritterLifeEventTypeId", "Description", val.EnumCritterLifeEventTypeId); return(View(val)); }
private void FixNullFields(CritterLifeEvent val) { if (String.IsNullOrWhiteSpace(val.Comment)) { val.Comment = "N/A"; } if (String.IsNullOrWhiteSpace(val.Description)) { val.Description = "N/A"; } }
public async Task <IActionResult> Create([Bind("CritterLifeEventId,Comment,CritterId,DateTime,Description,EnumCritterLifeEventDataId,EnumCritterLifeEventTypeId,Timestamp,VersionNumber")] CritterLifeEvent val) { this.FixNullFields(val); if (ModelState.IsValid) { _context.Add(val); await _context.SaveChangesAsync(); return(RedirectToAction(nameof(Index))); } ViewData["CritterId"] = new SelectList(_context.Critter, "CritterId", "CritterImageId", val.CritterId); ViewData["EnumCritterLifeEventTypeId"] = new SelectList(_context.EnumCritterLifeEventType, "EnumCritterLifeEventTypeId", "Description", val.EnumCritterLifeEventTypeId); return(View(val)); }
private async Task AddNewEvent(int critterId, int eventId, string eventTypeName, string description) { var eventType = await this._livestock.EnumCritterLifeEventType.FirstAsync(e => e.Description == eventTypeName); if (!eventType.AllowMultiple) { var critter = await this._livestock.Critter.Include(c => c.CritterLifeEvent).FirstAsync(c => c.CritterId == critterId); if (critter.CritterLifeEvent.Any(e => e.EnumCritterLifeEventTypeId == eventType.EnumCritterLifeEventTypeId)) { throw new OnlyOneEventAllowedException($"Only one '{eventTypeName}' event is allowed per critter."); } } var @event = new CritterLifeEvent { CritterId = critterId, Comment = "N/A", DateTime = DateTime.Now, Description = description, EnumCritterLifeEventDataId = eventId, EnumCritterLifeEventType = eventType, VersionNumber = 1 }; await this._livestock.AddAsync(@event); // TODO: Handle other flags. if (eventType.FlagCantReproduce) { var critter = await this._livestock.Critter.FindAsync(critterId); critter.UpdateFlag(CritterFlags.ReproduceNoLifeEvent, true); } await this._livestock.SaveChangesAsync(); }