Ejemplo n.º 1
0
        public async Task <IActionResult> RemoveItem(long id)
        {
            if (ModelState.IsValid)
            {
                var user = await AvioAdminService.GetCurrentUser();

                if (user != null)
                {
                    var avioCompany = await AvioService.GetCompany(user.AvioCompanyId);

                    if (avioCompany != null)
                    {
                        var item = avioCompany.PriceList.Where(t => t.PriceListIdemId == id).SingleOrDefault();

                        if (item != null)
                        {
                            await PriceListItemService.RemovePriceListItem(item);

                            return(Ok(200));
                        }

                        return(NotFound("Item not found."));
                    }

                    return(BadRequest("Company wasn't found."));
                }

                return(Unauthorized("You must log in as an administrator of this company."));
            }

            return(BadRequest("No sufficient data provided."));
        }
        public async Task <IActionResult> GetCompanyDetails(long id)
        {
            AvioCompanyProfileDTO avioCompanyProfileDTO = new AvioCompanyProfileDTO();

            if (ModelState.IsValid)
            {
                AvioCompany company = await AvioService.GetCompany(id);

                AvioCompanyProfile companyProfile  = new AvioCompanyProfile();
                int avioCompanyRatingPicture       = 0;
                List <Destination> destinationList = company.Destinations;

                string allDestinations = "";
                for (int i = 0; i < destinationList.Count; i++)
                {
                    allDestinations += destinationList[i].Name + ",";
                }

                companyProfile = await AvioService.GetCompanyProfile(id);

                avioCompanyRatingPicture = (int)(Math.Round(await AvioService.GetAverageCompanyRating(id)));

                avioCompanyProfileDTO.Id              = company.AvioCompanyId;
                avioCompanyProfileDTO.Name            = companyProfile.Name;
                avioCompanyProfileDTO.RatingPicture   = avioCompanyRatingPicture;
                avioCompanyProfileDTO.Address         = companyProfile.Address;
                avioCompanyProfileDTO.Description     = companyProfile.PromoDescription;
                avioCompanyProfileDTO.Destinations    = allDestinations;
                avioCompanyProfileDTO.DestinationList = destinationList;

                return(Ok(new { avioCompanyProfileDTO }));
            }
            ModelState.AddModelError("", "Cannot retrieve user data.");
            return(BadRequest(ModelState));
        }
Ejemplo n.º 3
0
        public async Task <IActionResult> UpdateCompanyProfile([FromBody] AvioCompanyProfile model)
        {
            if (ModelState.IsValid)
            {
                var user = await AvioAdminService.GetCurrentUser();

                if (user != null)
                {
                    var avioCompany = await AvioService.GetCompany(user.AvioCompanyId);

                    if (avioCompany != null)
                    {
                        var avioCompanyProfile = await AvioService.GetCompanyProfile(avioCompany.AvioCompanyProfileId);

                        avioCompanyProfile.Name             = model.Name;
                        avioCompanyProfile.Address          = model.Address;
                        avioCompanyProfile.PromoDescription = model.PromoDescription;

                        await AvioService.UpdateCompanyProfile(avioCompanyProfile);

                        return(Ok(200));
                    }

                    return(BadRequest("Avio company not found."));
                }

                return(Unauthorized("You must log in as an administrator of this company."));
            }

            return(BadRequest("Not enough data provided."));
        }
Ejemplo n.º 4
0
        public async Task <IActionResult> RemoveTicket(long id)
        {
            if (ModelState.IsValid)
            {
                var user = await AvioAdminService.GetCurrentUser();

                if (user != null)
                {
                    var avioCompany = await AvioService.GetCompany(user.AvioCompanyId);

                    if (avioCompany != null)
                    {
                        var ticket = avioCompany.FastReservationTickets.Where(t => t.FRFTId == id).SingleOrDefault();

                        if (ticket != null)
                        {
                            await FastReservationFlightTicketService.RemoveTicket(ticket);

                            return(Ok(200));
                        }

                        return(NotFound("Ticket not found."));
                    }
                    else
                    {
                        return(BadRequest("Company wasn't found."));
                    }
                }
            }

            return(BadRequest("No sufficient data provided."));
        }
Ejemplo n.º 5
0
        public async Task <IActionResult> CreateItem([FromBody] PriceListItemDTO model)
        {
            if (ModelState.IsValid)
            {
                var user = await AvioAdminService.GetCurrentUser();

                if (user != null)
                {
                    var avioCompany = await AvioService.GetCompany(user.AvioCompanyId);

                    if (avioCompany != null)
                    {
                        PriceListItem item = new PriceListItem()
                        {
                            Name  = model.Name,
                            Price = model.Price
                        };

                        avioCompany.PriceList.Add(item);
                        await AvioService.UpdateCompany(avioCompany);

                        return(Ok(200));
                    }

                    return(BadRequest("Company wasn't found."));
                }

                return(Unauthorized("You must log in as an administrator of this company."));
            }

            return(BadRequest("Not enough data provided."));
        }
Ejemplo n.º 6
0
        public async Task <IActionResult> RemoveFlight(long id)
        {
            if (ModelState.IsValid)
            {
                var user = await AvioAdminService.GetCurrentUser();

                if (user != null)
                {
                    var avioCompany = await AvioService.GetCompany(user.AvioCompanyId);

                    if (avioCompany != null)
                    {
                        var flight = avioCompany.Flights.Where(f => f.FlightId == id).SingleOrDefault();

                        if (flight != null)
                        {
                            await FlightService.RemoveFlight(flight);

                            return(Ok(200));
                        }

                        return(NotFound("Flight not found."));
                    }

                    return(BadRequest("Company wasn't found."));
                }

                return(Unauthorized("You must log in as an administrator of this company."));
            }

            return(BadRequest("No sufficient data provided."));
        }
Ejemplo n.º 7
0
        public async Task <IActionResult> GetCompanyReport()
        {
            if (ModelState.IsValid)
            {
                var user = await AvioAdminService.GetCurrentUser();

                if (user != null)
                {
                    var avioCompany = await AvioService.GetCompany(user.AvioCompanyId);

                    if (avioCompany != null)
                    {
                        var companyRating = await AvioService.GetAverageCompanyRating(avioCompany.AvioCompanyId);

                        var flightRating = await AvioService.GetAverageFlightRating(avioCompany.AvioCompanyId);

                        var graph = await AvioService.GetLastMonthsSoldTickets(avioCompany.AvioCompanyId, 6);

                        var revenue = await AvioService.GetRevenue(avioCompany.AvioCompanyId);

                        return(Ok(new { companyRating, flightRating, graph, revenue }));
                    }
                }
            }

            ModelState.AddModelError("", "Cannot retrieve user data.");
            return(BadRequest(ModelState));
        }
Ejemplo n.º 8
0
        public async Task <IActionResult> CreateAvioAdmin([FromBody] RegisterAdminDTO adminDTO)
        {
            if (ModelState.IsValid)
            {
                if (await AvioAdminService.AdminExists(adminDTO.Username))
                {
                    return(BadRequest("Admin already exists with that username."));
                }

                if (await CarAdminService.AdminExists(adminDTO.Username))
                {
                    return(BadRequest("Admin already exists with that username."));
                }

                if (adminDTO.Password != adminDTO.ConfirmPassword)
                {
                    return(BadRequest("Password and confirmation password don't match."));
                }

                RegularUser user = new RegularUser()
                {
                    UserName = adminDTO.Username,
                    Status   = UserStatus.Activated
                };

                var foundAdmin = await UserManager.FindByNameAsync(user.UserName) != null;

                if (!foundAdmin)
                {
                    var createdAdmin = await UserManager.CreateAsync(user, adminDTO.Password);

                    if (createdAdmin.Succeeded)
                    {
                        await UserManager.AddToRoleAsync(user, "AvioAdmin");

                        AvioAdmin admin = new AvioAdmin()
                        {
                            UserId        = user.Id,
                            AvioCompanyId = (await AvioService.GetCompanyByName(adminDTO.CompanyName)).AvioCompanyId
                        };

                        if (admin.AvioCompanyId > 0)
                        {
                            await AvioAdminService.RegisterAdmin(user.Id, admin);

                            return(Ok(200));
                        }
                        else
                        {
                            return(BadRequest("Avio company not found."));
                        }
                    }
                }

                return(BadRequest("Admin already exists."));
            }

            return(BadRequest("No sufficient data provided."));
        }
 public FlightController(FlightService flightService, AvioService avioService, UserService userService,
                         AeroplaneService aeroplaneService, SeatService seatService)
 {
     FlightService    = flightService;
     AvioService      = avioService;
     UserService      = userService;
     AeroplaneService = aeroplaneService;
     SeatService      = seatService;
 }
Ejemplo n.º 10
0
 public ReservationController(UserService userService, FlightService flightService, AvioService avioService,
                              ReservationService reservationService, AeroplaneService aeroplaneService)
 {
     UserService        = userService;
     FlightService      = flightService;
     AvioService        = avioService;
     ReservationService = reservationService;
     AeroplaneService   = aeroplaneService;
 }
Ejemplo n.º 11
0
        public async Task <IActionResult> CreateFlight([FromBody] FlightDTO model)
        {
            if (ModelState.IsValid)
            {
                if (model.Departure > model.Arrival)
                {
                    return(BadRequest("Departure cannot be before landing."));
                }

                if (model.Departure < DateTime.Now)
                {
                    return(BadRequest("Departure cannot be before today's date."));
                }

                var user = await AvioAdminService.GetCurrentUser();

                if (user != null)
                {
                    var avioCompany = await AvioService.GetCompany(user.AvioCompanyId);

                    if (avioCompany != null)
                    {
                        model.DepartureLocation.DestinationId = 0;
                        model.ArrivalLocation.DestinationId   = 0;
                        foreach (Destination d in model.Transit)
                        {
                            d.DestinationId = 0;
                        }

                        var flight = new Flight()
                        {
                            AeroplaneId       = (await AeroplaneService.GetAeroplane(user.AvioCompanyId, model.Aeroplane)).AeroplaneId,
                            Arrival           = model.Arrival,
                            ArrivalLocation   = model.ArrivalLocation,
                            Departure         = model.Departure,
                            DepartureLocation = model.DepartureLocation,
                            AvioCompanyId     = user.AvioCompanyId,
                            Price             = model.Price,
                            Transit           = model.Transit,
                            TravelDistance    = model.TravelDistance,
                            TravelTime        = model.TravelTime
                        };

                        avioCompany.Flights.Add(flight);
                        await AvioService.UpdateCompany(avioCompany);

                        return(Ok(200));
                    }

                    return(BadRequest("Avio company not found."));
                }

                return(Unauthorized("You must log in as an administrator of this company."));
            }

            return(BadRequest("Not enough data provided."));
        }
Ejemplo n.º 12
0
        public async Task <IActionResult> GetAdmins()
        {
            List <AdminDTO> retVal = new List <AdminDTO>();

            var avioAdmins = await AvioAdminService.GetAdmins();

            foreach (AvioAdmin admin in avioAdmins)
            {
                var user = await AvioAdminService.GetAdminUser(admin.UserId);

                if (admin.AvioCompanyId > 0)
                {
                    var company = await AvioService.GetCompany(admin.AvioCompanyId);

                    if (company != null)
                    {
                        var companyProfile = await AvioService.GetCompanyProfile(company.AvioCompanyProfileId);

                        retVal.Add(new AdminDTO()
                        {
                            Id        = user.Id,
                            Username  = user.UserName,
                            AdminType = "Avio Company Admin",
                            Company   = companyProfile.Name
                        });
                    }
                }
            }

            var carAdmins = await CarAdminService.GetAdmins();

            foreach (CarAdmin admin in carAdmins)
            {
                var user = await CarAdminService.GetAdminUser(admin.UserId);

                if (admin.CarCompanyId > 0)
                {
                    var company = await RentACarService.GetCompany(admin.CarCompanyId);

                    if (company != null)
                    {
                        var companyProfile = await RentACarService.GetCompanyProfile(company.CarCompanyProfileId);

                        retVal.Add(new AdminDTO()
                        {
                            Id        = user.Id,
                            Username  = user.UserName,
                            AdminType = "Car Company Admin",
                            Company   = companyProfile.Name
                        });
                    }
                }
            }

            return(Ok(retVal));
        }
Ejemplo n.º 13
0
 public SystemController(UserManager <RegularUser> userManager, UserService userService, AvioService avioService, RentACarService rentACarService,
                         AvioAdminService avioAdminService, CarAdminService carAdminService)
 {
     UserManager      = userManager;
     UserService      = userService;
     AvioService      = avioService;
     RentACarService  = rentACarService;
     AvioAdminService = avioAdminService;
     CarAdminService  = carAdminService;
 }
Ejemplo n.º 14
0
 public AvioAdminController(AvioService avioService, AvioAdminService avioAdminService, AeroplaneService aeroplaneService, FlightService flightService,
                            FastReservationFlightTicketService fastReservationFlightTicketService, PriceListItemService priceListItemService)
 {
     AvioService      = avioService;
     AvioAdminService = avioAdminService;
     AeroplaneService = aeroplaneService;
     FlightService    = flightService;
     FastReservationFlightTicketService = fastReservationFlightTicketService;
     PriceListItemService = priceListItemService;
 }
Ejemplo n.º 15
0
 public UserController(UserService userService, FlightService flightService, ReservationService reservationService,
                       AvioService avioService, VehicleService vehicleService, RentACarService rentACarService, IConfiguration configuration)
 {
     _userService        = userService;
     _configuration      = configuration;
     _flightService      = flightService;
     _reservationService = reservationService;
     _avioService        = avioService;
     _vehicleService     = vehicleService;
     _rentACarService    = rentACarService;
 }
Ejemplo n.º 16
0
        public async Task <IActionResult> GetCompanyProfile()
        {
            List <AvioCompanyProfileDTO> avioCompanyProfileDTOList = new List <AvioCompanyProfileDTO>();

            if (ModelState.IsValid)
            {
                List <AvioCompany> companies = await AvioService.GetCompanies();

                List <AvioCompanyProfile> companiesProfile  = new List <AvioCompanyProfile>();
                List <double>             avioCompanyRating = new List <double>();
                List <int> avioCompanyRatingPicture         = new List <int>();

                foreach (var avioCompany in companies)
                {
                    companiesProfile.Add(await AvioService.GetCompanyProfile(avioCompany.AvioCompanyId));
                    avioCompanyRating.Add(await AvioService.GetAverageCompanyRating(avioCompany.AvioCompanyId));
                    avioCompanyRatingPicture.Add((int)(Math.Round(await AvioService.GetAverageCompanyRating(avioCompany.AvioCompanyId))));
                }

                for (int i = 0; i < companies.Count; i++)
                {
                    string allDestinations = "";
                    for (int j = 0; j < companies[i].Destinations.Count; j++)
                    {
                        if (j < companies[i].Destinations.Count - 1)
                        {
                            allDestinations += companies[i].Destinations[j].Name + ", ";
                        }
                        else
                        {
                            allDestinations += companies[i].Destinations[j].Name;
                        }
                    }

                    AvioCompanyProfileDTO acpDTO = new AvioCompanyProfileDTO()
                    {
                        Id            = companies[i].AvioCompanyId,
                        Name          = companiesProfile[i].Name,
                        Destinations  = allDestinations,
                        Address       = companiesProfile[i].Address,
                        Description   = companiesProfile[i].PromoDescription,
                        Rating        = avioCompanyRating[i],
                        RatingPicture = avioCompanyRatingPicture[i]
                    };
                    avioCompanyProfileDTOList.Add(acpDTO);
                }

                return(Ok(new { avioCompanyProfileDTOList }));
            }

            ModelState.AddModelError("", "Cannot retrieve user data.");
            return(BadRequest(ModelState));
        }
Ejemplo n.º 17
0
        public async Task <IActionResult> RemoveAvioCompany(long id)
        {
            if (ModelState.IsValid)
            {
                var result = await AvioService.RemoveCompany(id);

                if (result)
                {
                    return(Ok(200));
                }
                else
                {
                    return(BadRequest("Company wasn't found."));
                }
            }

            return(BadRequest("No ID provided."));
        }
Ejemplo n.º 18
0
        public async Task <IActionResult> GetAvioCompanies()
        {
            var avioCompanies = await AvioService.GetCompanies();

            List <AvioCompanyDTO> retVal = new List <AvioCompanyDTO>();

            foreach (AvioCompany avioCompany in avioCompanies)
            {
                var avioCompanyProfile = await AvioService.GetCompanyProfile(avioCompany.AvioCompanyProfileId);

                retVal.Add(new AvioCompanyDTO()
                {
                    Id          = avioCompany.AvioCompanyId,
                    Name        = avioCompanyProfile.Name,
                    Address     = avioCompanyProfile.Address,
                    Description = avioCompanyProfile.PromoDescription
                });
            }

            return(Ok(retVal));
        }
Ejemplo n.º 19
0
        public async Task <IActionResult> GetCompanyProfile()
        {
            if (ModelState.IsValid)
            {
                var user = await AvioAdminService.GetCurrentUser();

                if (user != null)
                {
                    var avioCompany = await AvioService.GetCompany(user.AvioCompanyId);

                    if (avioCompany != null)
                    {
                        var avioCompanyProfile = await AvioService.GetCompanyProfile(avioCompany.AvioCompanyProfileId);

                        return(Ok(new { avioCompany, avioCompanyProfile }));
                    }
                }
            }

            ModelState.AddModelError("", "Cannot retrieve user data.");
            return(BadRequest(ModelState));
        }
Ejemplo n.º 20
0
        public async Task <IActionResult> CreateAvioCompany([FromBody] AvioCompanyDTO avioCompanyDTO)
        {
            if (ModelState.IsValid)
            {
                if (await AvioService.CompanyExists(avioCompanyDTO.Name))
                {
                    return(BadRequest("Company already exists with the same name."));
                }

                var profile = new AvioCompanyProfile()
                {
                    Name             = avioCompanyDTO.Name,
                    Address          = avioCompanyDTO.Address,
                    PromoDescription = avioCompanyDTO.Description
                };

                await AvioService.CreateCompany(new AvioCompany(), profile);

                return(Ok(200));
            }

            return(BadRequest("No sufficient data provided."));
        }
Ejemplo n.º 21
0
        public async Task <IActionResult> CreateTicket([FromBody] FastReservationFlightTicketDTO ticket)
        {
            if (ModelState.IsValid)
            {
                var user = await AvioAdminService.GetCurrentUser();

                if (user != null)
                {
                    var avioCompany = await AvioService.GetCompany(user.AvioCompanyId);

                    if (avioCompany != null)
                    {
                        FastReservationFlightTicket frft = new FastReservationFlightTicket()
                        {
                            FlightId = ticket.FlightId,
                            Percent  = ticket.Percent
                        };

                        if ((await FlightService.GetFlight(frft.FlightId)) == null)
                        {
                            return(BadRequest("Flight not found."));
                        }

                        avioCompany.FastReservationTickets.Add(frft);
                        await AvioService.UpdateCompany(avioCompany);

                        return(Ok(200));
                    }

                    return(BadRequest("Company wasn't found."));
                }

                return(Unauthorized("You must log in as an administrator of this company."));
            }

            return(BadRequest("Not enough data provided."));
        }
Ejemplo n.º 22
0
        public async Task <IActionResult> CreateAvioCompany([FromBody] AvioCompanyDTO avioCompanyDTO)
        {
            if (ModelState.IsValid)
            {
                if (await AvioService.CompanyExists(avioCompanyDTO.Name))
                {
                    return(BadRequest("Company already exists with the same name."));
                }

                var profile = new AvioCompanyProfile()
                {
                    Name             = avioCompanyDTO.Name,
                    Address          = avioCompanyDTO.Address,
                    PromoDescription = avioCompanyDTO.Description
                };

                // add destinations
                var dest = new List <Destination>();
                string[,] destinations = { { "Belgrade", "44.786568",  "20.448921"  },
                                           { "Tokyo",    "35.689487",  "139.691711" },
                                           { "New York", "40.712776",  "-74.005974" },
                                           { "Berlin",   "52.520008",  "13.404954"  },
                                           { "Rome",     "41.9028",    "12.4964"    },
                                           { "Zurich",   "47.3768880", "8.541694"   } };

                for (int j = 0; j < destinations.GetLength(0); ++j)
                {
                    Destination destination = new Destination()
                    {
                        Name      = destinations[j, 0],
                        Latitude  = double.Parse(destinations[j, 1], CultureInfo.InvariantCulture),
                        Longitude = double.Parse(destinations[j, 2], CultureInfo.InvariantCulture),
                    };

                    dest.Add(destination);
                }

                AvioCompany company = new AvioCompany()
                {
                    Destinations = dest
                };

                await AvioService.CreateCompany(company, profile);

                // create planes for companies
                var aeroplaneA380 = new Aeroplane()
                {
                    AvioCompanyId = company.AvioCompanyId,
                    Name          = "Airbus A380"
                };

                var aeroplane737 = new Aeroplane()
                {
                    AvioCompanyId = company.AvioCompanyId,
                    Name          = "Boeing 737"
                };

                if (!await AeroplaneService.AeroplaneExists(company.AvioCompanyId, aeroplaneA380.Name))
                {
                    await AeroplaneService.AddAeroplane(aeroplaneA380);
                }

                if (!await AeroplaneService.AeroplaneExists(company.AvioCompanyId, aeroplane737.Name))
                {
                    await AeroplaneService.AddAeroplane(aeroplane737);
                }

                // create seats for planes
                var seatsA380 = new Seats()
                {
                    AeroplaneId = aeroplaneA380.AeroplaneId,
                    SeatCount   = 240,
                    InOneRow    = 6
                };

                var seats737 = new Seats()
                {
                    AeroplaneId = aeroplane737.AeroplaneId,
                    SeatCount   = 320,
                    InOneRow    = 8
                };

                if (!await SeatService.SeatsExist(aeroplaneA380.AeroplaneId))
                {
                    await SeatService.AddSeats(seatsA380);
                }

                if (!await SeatService.SeatsExist(aeroplane737.AeroplaneId))
                {
                    await SeatService.AddSeats(seats737);
                }

                return(Ok(200));
            }

            return(BadRequest("No sufficient data provided."));
        }
Ejemplo n.º 23
0
 public AvioController(AvioService avioSerivce, DestinationService destinationService)
 {
     AvioService        = avioSerivce;
     DestinationService = destinationService;
 }