public async Task <IActionResult> RemoveAsync([FromBody] RemoveFlight command) { try { if (ModelState.IsValid) { Flight flight = Mapper.Map <Flight>(command); var currentFlight = await _dbContext.Flights.FirstOrDefaultAsync(v => v.FlightNumber == flight.FlightNumber); if (currentFlight == null) { return(NotFound()); } // remove flight _dbContext.Flights.Remove(currentFlight); await _dbContext.SaveChangesAsync(); // send event var e = Mapper.Map <FlightRemoved>(command); await _messagePublisher.PublishMessageAsync(e.MessageType, e, ""); //return result return(NoContent()); } return(BadRequest()); } catch (DbUpdateException) { ModelState.AddModelError("", "Unable to save changes. " + "Try again, and if the problem persists " + "see your system administrator."); return(StatusCode(StatusCodes.Status500InternalServerError)); } }
public async Task <ActionResult> DeleteFlightAsync(int id, RemoveFlight values) { var date = await _unitOfWork.Dates.GetByAsync(id); // Check date exists if (date == null) { return(NotFound(new { Id = "Mã ngày này không tồn tại." })); } var flightAsync = await _unitOfWork.Flights.FindAsync(a => a.Id.ToLower().Equals(values.FlightId.ToLower())); // Kiểm tra chuyến bay có tồn tại hay không var flight = flightAsync.SingleOrDefault(); if (flight == null) { return(NotFound(new { Id = "Mã chuyến bay này không tồn tại." })); } // Kiểm tra chuyến bay này trong ngày đã được bán chưa var seatsCountAsync = await _unitOfWork.Flights.FindAsync(f => f.Id.ToLower().Equals(values.FlightId.ToLower())); var seatsCount = seatsCountAsync.Select(f => f.SeatsCount).SingleOrDefault(); var flightTempAsync = await _unitOfWork.DateFlights.FindAsync(df => df.DateId == id && df.FlightId.ToLower().Equals(values.FlightId.ToLower()) && df.SeatsLeft == seatsCount); // Chưa bán vé nào var flightTemp = flightTempAsync.SingleOrDefault(); if (flightTemp == null) { return(BadRequest(new { SeatsLeft = "Không thể xóa vì loại vé của chuyến bay này đã được bán." })); } // Xóa chuyến bay được chọn var dateFlightAsync = await _unitOfWork.DateFlights.FindAsync(df => df.DateId == id && df.FlightId.ToLower().Equals(values.FlightId.ToLower())); var dateFlight = dateFlightAsync.SingleOrDefault(); try { await _unitOfWork.DateFlights.RemoveAsync(dateFlight); await _unitOfWork.CompleteAsync(); return(Ok(new { success = true, message = "Xóa thành công." })); } catch (Exception) { return(BadRequest(new { message = "Xóa không thành công." })); } }
public async Task <ActionResult> DeleteFlightAsync(int id, RemoveFlight values) { var res = await _service.DeleteFlightAsync(id, values); return(res); }