예제 #1
0
        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));
            }
        }
예제 #2
0
        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." }));
            }
        }
예제 #3
0
        public async Task <ActionResult> DeleteFlightAsync(int id, RemoveFlight values)
        {
            var res = await _service.DeleteFlightAsync(id, values);

            return(res);
        }