public void btnNext_Click(object sender, EventArgs e)
    {
        ParkingBusiness pb = new ParkingBusiness();
        pl.ListOfSpots = new List<ParkingSpot>();
        ParkingSpot ps = new ParkingSpot();
        int validNameResult = 0;

        if (TextBoxNameOfNewParking.Text.Equals("") || TextBoxLocationOfNewParking.Text.Equals("") || TextBoxDimensionsOfParkingX.Text.Equals("") || TextBoxDimensionsOfParkingY.Text.Equals(""))
        {
            LabelError.Text = "Espacios vacíos";
        }
        else
        {
            pl.Name = TextBoxNameOfNewParking.Text;
            pl.Location = TextBoxLocationOfNewParking.Text;
            pl.DimensionX = Int32.Parse(TextBoxDimensionsOfParkingX.Text);
            pl.DimensionY = Int32.Parse(TextBoxDimensionsOfParkingY.Text);
            Session["PARKINGLOT"] = pl;
            validNameResult = pb.VerifyParking(pl);
            if (validNameResult == -1)
            {
                LabelError.Text = "Nombre del parqueo ya existe";
                TextBoxNormalSpot.Enabled = true;
                TextBoxNameOfNewParking.Enabled = true;
                TextBoxLocationOfNewParking.Enabled = true;
                TextBoxDimensionsOfParkingX.Enabled = true;
                TextBoxDimensionsOfParkingY.Enabled = true;
            }
            else
            {
                ButtonNext.Enabled = false;
                ButtonCancel.Enabled = false;
                TextBoxNormalSpot.Text = "" + pl.DimensionX * pl.DimensionY;
                Session["AddParking"] = 1;
            }
        }
    }
    public void FillDropDownListParking()
    {
        ParkingBusiness parkingbusiness = new ParkingBusiness();
        DataSet dataSet = parkingbusiness.GetParkingForBooking();

        DropDownListParking.DataTextField = dataSet.Tables[0].Columns["Name"].ToString();
        DropDownListParking.DataValueField = dataSet.Tables[0].Columns["Id"].ToString();
        DropDownListParking.DataSource = dataSet.Tables[0];
        DropDownListParking.DataBind();
    }
    protected void btnDeleteReserve_Click(object sender, EventArgs e)
    {
        Booking newBooking = new Booking();
        BookingBusiness bookingBusiness = new BookingBusiness();
        ParkingBusiness parkingBusiness = new ParkingBusiness();
        User currentUser = (User)Session["USER"];
        Vehicle bookingVehicle = new Vehicle();
        ParkingSpot bookingSpot = new ParkingSpot();
        ParkingLot bookingParking = new ParkingLot();

        bookingSpot.IdParking = Int32.Parse(DropDownListParking.SelectedValue);
        bookingSpot = parkingBusiness.GetSpotForReserve(bookingSpot, (int)Session["Position"]);
        newBooking.IdVehicle = bookingVehicle;
        newBooking.IdUser = currentUser;
        newBooking.IdParkingSpot = bookingSpot;
        newBooking.IdParkingLot = bookingParking;
        newBooking.EntryTime = DateTime.Parse(DropDownListInitialHour.SelectedValue);
        newBooking.ExitTime = DateTime.Parse(DropDownListFinalHour.SelectedValue);
        newBooking.IdVehicle.Id = DropDownListVehicleFormUser.SelectedValue.Trim();
        newBooking.Date = DateTime.Today;
        newBooking.IdParkingSpot.Id = bookingSpot.Id;
        newBooking.IdParkingLot.Id = Int32.Parse(DropDownListParking.SelectedValue);

        if (bookingSpot.Id == 0)
        {
            //Return error here
        }
        else
        {
            bookingBusiness.DenyBooking(newBooking, newBooking.EntryTime, newBooking.ExitTime);
            bookingParking = parkingBusiness.GetDimensions(bookingParking);
            selectedPosition = -1;
            bookingParking = removeSelected(Int32.Parse(DropDownListParking.SelectedValue));
            FillTableDesignOfNewParking(newBooking.IdParkingLot.Id);

        }
    }
 public ParkingLot removeSelected(int parkingName)
 {
     ParkingLot parkingTable = new ParkingLot();
     ParkingBusiness parkingBusiness = new ParkingBusiness();
     parkingTable.Id = parkingName;
     parkingTable = parkingBusiness.GetDimensions(parkingTable);
     for (int counterRow = 0; counterRow < parkingTable.DimensionX; counterRow++)
     {
         for (int counterColumn = 0; counterColumn < parkingTable.DimensionY; counterColumn++)
         {
             if (TableDesignOfNewParking.Rows[counterRow].Cells[counterColumn].BackColor == Color.Green)
             {
                 TableDesignOfNewParking.Rows[counterRow].Cells[counterColumn].BackColor = (Color)Session["BackColor"];
             }
         }
     }
     return parkingTable;
 }
    public void FillTableDesignOfNewParking(int parkingName)
    {
        TableDesignOfNewParking.Rows.Clear();
        ParkingBusiness parkingBusiness = new ParkingBusiness();
        BookingBusiness bookingBusiness = new BookingBusiness();
        ParkingLot parkingspotTable = new ParkingLot();
        ParkingSpot parking = new ParkingSpot();
        int counter = 0;
        parkingspotTable.Id = parkingName;
        parkingspotTable = parkingBusiness.GetDimensions(parkingspotTable);
        TableDesignOfNewParking = parkingBusiness.GetSpotData(parkingspotTable, TableDesignOfNewParking);

        for (int counterRow = 0; counterRow < parkingspotTable.DimensionX; counterRow++)
        {
            for (int counterColumn = 0; counterColumn < parkingspotTable.DimensionY; counterColumn++)
            {
                TableDesignOfNewParking.Rows[counterRow].Cells[counterColumn].Controls.Add(addButton(counter));
                counter++;
            }
        }
        TableDesignOfNewParking = bookingBusiness.VerifySpots(parkingspotTable, TableDesignOfNewParking, DateTime.Parse(DropDownListInitialHour.SelectedValue), DateTime.Parse(DropDownListFinalHour.SelectedValue));
        for (int counterRow = 0; counterRow < parkingspotTable.DimensionX; counterRow++)
        {
            for (int counterColumn = 0; counterColumn < parkingspotTable.DimensionY; counterColumn++)
            {
                if (TableDesignOfNewParking.Rows[counterRow].Cells[counterColumn].BackColor == Color.Red)
                {
                    TableDesignOfNewParking.Rows[counterRow].Cells[counterColumn].Enabled = true;
                }
                else
                {
                    TableDesignOfNewParking.Rows[counterRow].Cells[counterColumn].Enabled = false;
                }
            }
        }
    }
Esempio n. 6
0
        public async Task <List <Comparatives> > Get(string option, int scenarioId, double acceptableParkingDistance)
        {
            ScenarioOption cenarioOption = new ScenarioOption {
                Option = option, ScenarioID = scenarioId
            };

            BestRoutesBusiness   bestRoutesBusiness   = new BestRoutesBusiness();
            TransportAppBusiness transportAppBusiness = new TransportAppBusiness();
            CabBusiness          cabBusiness          = new CabBusiness();
            ParkingBusiness      parkingBusiness      = new ParkingBusiness();

            CenariosTester       cenariosTester       = new CenariosTester();
            EstacionamentoTester estacionamentoTester = new EstacionamentoTester();

            var cenarios        = cenariosTester.CriarCenariosParaTeste();
            var estacionamentos = estacionamentoTester.CriaEstacionamentosParaTeste();

            List <Comparatives>       lsComparatives       = new List <Comparatives>();
            List <ComparativeOptions> lsComparativeOptions = new List <ComparativeOptions>();

            if (cenarioOption.Option.Equals("transportOption"))
            {
                //Cenario
                var cenarioSelecionado = cenarios.Where(x => x.CenarioID == cenarioOption.ScenarioID).FirstOrDefault();

                List <Options> optionTraffic = await bestRoutesBusiness.GetBestRoutes(cenarioSelecionado.EnderecoOrigem, cenarioSelecionado.EnderecoDestino, cenarioSelecionado.HorarioSaida, string.Empty, "transit");

                List <Options> optionDriver = await bestRoutesBusiness.GetBestRoutes(cenarioSelecionado.EnderecoOrigem, cenarioSelecionado.EnderecoDestino, cenarioSelecionado.HorarioSaida, string.Empty, "driving");

                ComparativeOptions comparativeOptions = new ComparativeOptions();

                foreach (var item in optionTraffic)
                {
                    Comparatives comparatives = new Comparatives();
                    comparatives.AddressOrigin = new Address {
                        StreetName = cenarioSelecionado.EnderecoOrigem
                    };
                    comparatives.AddressDestine = new Address {
                        StreetName = cenarioSelecionado.EnderecoDestino
                    };
                    comparatives.Duration       = item.DurationValue;
                    comparatives.Distance       = item.DistanceValue;
                    comparatives.Cost           = item.CostValue;
                    comparatives.TransporteType = eTransportOptions.PublicTransportation.ToString();

                    lsComparatives.Add(comparatives);
                }

                //Driver
                foreach (var item in optionDriver)
                {
                    int duration = item.DurationValue;
                    int distance = item.DistanceValue;

                    double valorTransporteAplicativo = transportAppBusiness.GetCosts(duration, distance);
                    double valorTaxi           = cabBusiness.GetCosts(duration, distance, cenarioSelecionado.HorarioSaida);
                    double valorEstacionamento = parkingBusiness.GetBestCostFromAllParkings(estacionamentos, cenarioSelecionado.EnderecoDestino, cenarioSelecionado.HorarioSaida, acceptableParkingDistance).Result;

                    //Aplicativos
                    Comparatives comparativesAplicativos = new Comparatives();
                    comparativesAplicativos.AddressOrigin = new Address {
                        StreetName = cenarioSelecionado.EnderecoOrigem
                    };
                    comparativesAplicativos.AddressDestine = new Address {
                        StreetName = cenarioSelecionado.EnderecoDestino
                    };
                    comparativesAplicativos.Duration       = item.DurationValue;
                    comparativesAplicativos.Distance       = item.DistanceValue;
                    comparativesAplicativos.Cost           = valorTransporteAplicativo;
                    comparativesAplicativos.TransporteType = eTransportOptions.TransportApp.ToString();

                    lsComparatives.Add(comparativesAplicativos);

                    //Taxi
                    Comparatives comparativesTaxi = new Comparatives();
                    comparativesTaxi.AddressOrigin = new Address {
                        StreetName = cenarioSelecionado.EnderecoOrigem
                    };
                    comparativesTaxi.AddressDestine = new Address {
                        StreetName = cenarioSelecionado.EnderecoDestino
                    };
                    comparativesTaxi.Duration       = item.DurationValue;
                    comparativesTaxi.Distance       = item.DistanceValue;
                    comparativesTaxi.Cost           = valorTaxi;
                    comparativesTaxi.TransporteType = eTransportOptions.Cab.ToString();

                    lsComparatives.Add(comparativesTaxi);


                    //Estacionamentos
                    Comparatives comparativesEstacionamentos = new Comparatives();
                    comparativesEstacionamentos.AddressOrigin = new Address {
                        StreetName = cenarioSelecionado.EnderecoOrigem
                    };
                    comparativesEstacionamentos.AddressDestine = new Address {
                        StreetName = cenarioSelecionado.EnderecoDestino
                    };
                    comparativesEstacionamentos.Duration       = item.DurationValue;
                    comparativesEstacionamentos.Distance       = item.DistanceValue;
                    comparativesEstacionamentos.Cost           = valorEstacionamento;
                    comparativesEstacionamentos.TransporteType = eTransportOptions.Driver.ToString();

                    lsComparatives.Add(comparativesEstacionamentos);
                }

                return(lsComparatives);
            }
            else if (cenarioOption.Option.Equals("preferenceOption"))
            {
                //Melhor opção de transporte para cada preferencia do usuario
                List <ePreferences> preferencias = new List <ePreferences> {
                    ePreferences.Cost, ePreferences.Distance, ePreferences.Duration
                };

                foreach (var prefencia in preferencias)
                {
                }


                return(lsComparatives);
            }

            return(null);

            //foreach (var cen in cenarios)
            //{
            //Get Google maps para transporte publico
            //List<Options> optionsTransportePublico = await bestRoutesBusiness.GetBestRoutes(cen.EnderecoOrigem, cen.EnderecoDestino, cen.HorarioSaida, "transit");
            //foreach (var optp in optionsTransportePublico)
            //{
            //    optionValues.Add(new OptionValue { TransportOptions = eTransportOptions.PublicTransportation, Value = optp.CostValue });
            //    optionDistance.Add(new OptionDistance { TransportOptions = eTransportOptions.PublicTransportation, Value = optp.DistanceValue });
            //    optionDuration.Add(new OptionDuration { TransportOptions = eTransportOptions.PublicTransportation, Value = optp.DurationValue });
            //}

            //Get Google maps para veiculos
            //List<Options> optionsVeiculos = await bestRoutesBusiness.GetBestRoutes(cen.EnderecoOrigem, cen.EnderecoDestino, cen.HorarioSaida, "driving");

            //Fazer estimativa de custo com aplicativos de transporte
            //Fazer estimativa de custo com taxi
            //double valorTransporteAplicativo = 0.0;
            //double valorTaxi = 0.0;

            //foreach (var opt in optionsVeiculos)
            //{
            //    valorTransporteAplicativo = transportAppBusiness.GetCosts(opt.DurationValue, opt.DistanceValue);
            //    optionValues.Add(new OptionValue { TransportOptions = eTransportOptions.TransportApp, Value = valorTransporteAplicativo });
            //    optionDistance.Add(new OptionDistance { TransportOptions = eTransportOptions.TransportApp, Value = opt.DistanceValue });
            //    optionDuration.Add(new OptionDuration { TransportOptions = eTransportOptions.TransportApp, Value = opt.DurationValue });

            //    //

            //    valorTaxi = cabBusiness.GetCosts(opt.DurationValue, opt.DistanceValue, cen.HorarioSaida);
            //    optionValues.Add(new OptionValue { TransportOptions = eTransportOptions.Cab, Value = valorTaxi });
            //    optionDistance.Add(new OptionDistance { TransportOptions = eTransportOptions.Cab, Value = opt.DistanceValue });
            //    optionDuration.Add(new OptionDuration { TransportOptions = eTransportOptions.Cab, Value = opt.DurationValue });
            //}

            //Buscar estacionamentos perto da localização de destino
            //buscar preferencias do usuario
            //foreach (var est in estacionamentos)
            //{

            //}
            //}
        }
    protected void btnBookingSpot_Click(object sender, EventArgs e)
    {
        Booking newBooking = new Booking();
        BookingBusiness bookingBusiness = new BookingBusiness();
        ParkingBusiness parkingBusiness = new ParkingBusiness();
        User currentUser = (User)Session["USER"];
        Vehicle bookingVehicle = new Vehicle();
        ParkingSpot bookingSpot = new ParkingSpot();
        ParkingLot bookingParking = new ParkingLot();

        bookingSpot.IdParking = Int32.Parse(DropDownListParking.SelectedValue);
        bookingSpot = parkingBusiness.GetSpotForReserve(bookingSpot, (int)Session["Position"]);
        newBooking.IdVehicle = bookingVehicle;
        bookingParking.Name = DropDownListParking.SelectedItem.Text;
        newBooking.IdUser = currentUser;
        newBooking.IdParkingSpot = bookingSpot;
        newBooking.IdParkingLot = bookingParking;
        newBooking.EntryTime = DateTime.Parse(DropDownListInitialHour.SelectedValue);
        newBooking.ExitTime = DateTime.Parse(DropDownListFinalHour.SelectedValue);
        newBooking.IdVehicle.Id = DropDownListVehicleFormUser.SelectedValue.Trim();
        newBooking.Date = DateTime.Today;
        newBooking.IdParkingSpot.Id = bookingSpot.Id;
        newBooking.IdParkingLot.Id = Int32.Parse(DropDownListParking.SelectedValue);

        if (bookingSpot.Id == 0)
        {

        }
        else
        {
            bookingBusiness.InsertBooking(newBooking);
            Session["BOOKING"] = newBooking;
            bookingParking = parkingBusiness.GetDimensions(bookingParking);
            selectedPosition = -1;
            bookingParking = removeSelected(Int32.Parse(DropDownListParking.SelectedValue));
            Session["BOOKINGALERT"] = SendMail(newBooking);
            TableDesignOfNewParking = bookingBusiness.VerifySpots(bookingParking, TableDesignOfNewParking, DateTime.Parse(DropDownListInitialHour.SelectedValue), DateTime.Parse(DropDownListFinalHour.SelectedValue));
            Response.Redirect("bookingdone.aspx");

        }
    }
 protected void btnAddNewParking_Click(object sender, EventArgs e)
 {
     ParkingSpot ps = new ParkingSpot();
     ParkingBusiness pb = new ParkingBusiness();
     ParkingLot currentParking = (ParkingLot)Session["PARKINGLOT"];
     ps.IdParking = pb.AddParking(currentParking);
     currentParking.Id = ps.IdParking;
     if (ps.IdParking == -1)
     {
         LabelError.Text = "El nombre del parqueo ya existe";
     }
     else
     {
         pb.AddParkingSpot(TableDesignOfNewParking, currentParking);
     }
 }