public IHttpActionResult Create(FlightRequestModel flight)
        {
            if (!this.ModelState.IsValid)
            {
                return(this.BadRequest(this.ModelState));
            }

            var flightToAdd   = Mapper.Map <LegInstance>(flight);
            var addedFlightId = this.legInstancesServices.AddLegInstance(flightToAdd);

            return(this.Ok(addedFlightId));
        }
        public override async Task <DefaultResponse> AddFlight(FlightRequestModel request, ServerCallContext context)
        {
            var result = new DefaultResponse();

            try
            {
                var aircraft = await _hangarProxy.GetAircraft(request.Aircraft);

                if (string.IsNullOrEmpty(aircraft?.LicensePlate))
                {
                    result.Message = aircraft.Message;
                    return(result);
                }

                var airports = await _airportProxy.GetAllAirports();

                if (!airports.Where(x => x.City == request.Source).Any())
                {
                    result.Message = $"There is no connection with the airport in {request.Source}";
                    return(result);
                }

                if (!airports.Where(x => x.City == request.Target).Any())
                {
                    result.Message = $"There is no connection with the airport in {request.Target}";
                    return(result);
                }

                var flightRoute = await _airlineRepository.GetFligthRoute(airports.Where(x => x.City == request.Source).FirstOrDefault().Id, airports.Where(x => x.City == request.Target).FirstOrDefault().Id);

                if (flightRoute == null)
                {
                    result.Message = $"There is no air route between {request.Source} and {request.Target}";
                    return(result);
                }

                var flight = new FlightRaw()
                {
                    Aircraft    = request.Aircraft,
                    FligthRoute = flightRoute.Id,
                    State       = request.State
                };
                _airlineRepository.AddFligth(flight);
            }
            catch (Exception ex)
            {
                _logger.LogError(ex, $"ERROR: Adding Flight");
            }

            return(result);
        }
Exemple #3
0
        public async Task <PartialViewResult> LoadRequestToChangeStatus(Guid?id)
        {
            var task = await Task.Factory.StartNew <FlightRequestModel>(() =>
            {
                var request = _flightRequestService.FindById(id.Value).Result;

                var result = new FlightRequestModel()
                {
                    Id      = request.Id,
                    From    = request.From.Email,
                    To      = request.To.Email,
                    Message = request.Message,
                    Date    = request.SendTime,
                    Status  = request.Status.ToString()
                };

                return(result);
            });

            return(PartialView("AdminRequestView", task));
        }
Exemple #4
0
        public ActionResult SendRequest(FlightRequestModel flightRequestModel)
        {
            if (ModelState.IsValid)
            {
                var userFrom = _userManager.FindByEmailAsync(flightRequestModel.From).Result;
                var userTo   = _userManager.FindByEmailAsync(flightRequestModel.To).Result;

                if (userTo == null)
                {
                    ModelState.AddModelError("To", "Administrator not found.");
                }
                else if (!_userManager.IsInRoleAsync(userFrom.Id, "Dispatcher").Result)
                {
                    ModelState.AddModelError("From", "Sender is not Dispatcher");
                }
                else if (!_userManager.IsInRoleAsync(userTo.Id, "Administrator").Result)
                {
                    ModelState.AddModelError("To", "Recipient is not Administrator");
                }
                else
                {
                    var result = _flightRequestService.Create(userFrom.Email, userTo.Email, flightRequestModel.Message);
                    if (result.Status == AnswerStatus.Success)
                    {
                        return(RedirectToAction("Messages"));
                    }
                    else
                    {
                        foreach (var error in result.Errors)
                        {
                            ModelState.AddModelError(error.Key, error.Value);
                        }
                    }
                }
            }

            var requests = GenereteRequestList();

            return(View("Messages", requests));
        }