// GET: Aircraft/Create public IActionResult Create() { AircraftCreateModel viewModel = new AircraftCreateModel { AircraftType = string.Empty, Airline = string.Empty, Notification = new AlertNotification() }; return(View(viewModel)); }
public async Task <IActionResult> Create([Bind("AircraftType,Airline")] AircraftCreateModel aircraft) { AircraftCreateModel viewModel = new AircraftCreateModel { AircraftType = "", Airline = "", Notification = new AlertNotification(NotificationType.Error, "The aircraft type name or airline is invalid!") }; if (ModelState.IsValid) { var foundAircraftType = await _context.AircraftTypes.FirstOrDefaultAsync(act => act.Name == aircraft.AircraftType); var foundAirline = await _context.Airlines.FirstOrDefaultAsync(ac => ac.Name == aircraft.Airline); if (foundAircraftType == null || foundAirline == null) { viewModel.AircraftType = aircraft.AircraftType; viewModel.Airline = aircraft.Airline; viewModel.Notification.SetNotification(NotificationType.Error, "The aircraft type name or airline is invalid!"); return(View(viewModel)); } var foundAircraftDuplicate = await _context.Aircrafts.FirstOrDefaultAsync(ac => ac.AircraftTypeId == foundAircraftType.Id && ac.AirlineId == foundAirline.Id); if (foundAircraftDuplicate != null) { viewModel.AircraftType = aircraft.AircraftType; viewModel.Airline = aircraft.Airline; viewModel.Notification.SetNotification(NotificationType.Error, $"{aircraft.Airline} already has the {aircraft.AircraftType}"); return(View(viewModel)); } Aircraft newAircraft = new Aircraft { AircraftTypeId = foundAircraftType.Id, AirlineId = foundAirline.Id, Status = true }; _context.Aircrafts.Add(newAircraft); await _context.SaveChangesAsync(); viewModel.Notification.SetNotification(NotificationType.Success, $"Successfully created {aircraft.AircraftType} for {aircraft.Airline}"); return(View(viewModel)); } return(View(aircraft)); }