예제 #1
0
        private async void btnSubmit_Click(object sender, System.EventArgs e)
        {
            // Lay gia tri tren form gan vao
            flightSchedule.AirplaneCode  = ((Airplane)cboAirplane.SelectedItem).AirplaneCode;
            flightSchedule.RouteID       = ((Route)cboRoute.SelectedItem).ID;
            flightSchedule.DepartureDate = dateTimePicker1.Value;
            flightSchedule.IsActive      = rbtnActive.Checked;
            // Tao mot API
            FlightScheduleWrapper flightScheduleWrapper = new FlightScheduleWrapper();
            // Tao bien luu ket qua tra ve
            bool isSuccess;

            // Kiem tra xem dang o che do nao
            if (mode == FormMode.CREATE)
            {
                // Neu dang o che do them moi (CREATE)
                // POST account len server
                isSuccess = await flightScheduleWrapper.Post(flightSchedule);
            }
            else
            {
                // Neu dang o che do chinh sua (EDIT)
                // PUT account len server
                isSuccess = await flightScheduleWrapper.Put(flightSchedule.ID.ToString(), flightSchedule);
            }

            // Kiem tra ket qua tra ve
            if (isSuccess)
            {
                // Neu thanh cong
                MessageBox.Show("Operation completed successfully!", "Success", MessageBoxButtons.OK, MessageBoxIcon.Information);
                // Tat form CE
                this.Close();
            }
            else
            {
                // Neu that bai, hien thong bao loi
                MessageBox.Show("An error has occurred:\n" + flightScheduleWrapper.GetErrorMessage(), "Failed", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }
        /// <summary>
        /// Only use for generate sample data of table FlightSchedule
        /// This function will generate flight schedule for all route in database,
        /// each route will have <code>maxFlightSchedulePerRoute</code> flight schedules,
        /// each flight schedule of route will apart one day, starting from today.
        /// </summary>
        private async void AutoGenerateFlightSchedule()
        {
            DateTime startTime = DateTime.Now;

            Console.WriteLine("Start at {0}", startTime);

            FlightScheduleWrapper flightScheduleWrapper = new FlightScheduleWrapper();
            AirplaneWrapper       airplaneWrapper       = new AirplaneWrapper();
            AirplaneTypeWrapper   airplaneTypeWrapper   = new AirplaneTypeWrapper();
            AirplaneInfoWrapper   airplaneInfoWrapper   = new AirplaneInfoWrapper();
            RouteWrapper          routeWrapper          = new RouteWrapper();

            List <Airplane> lstAirplane = await airplaneWrapper.List();

            List <AirplaneType> lstAirplaneType = await airplaneTypeWrapper.List();

            List <AirplaneInfo> lstAirplaneInfo = await airplaneInfoWrapper.List();

            List <Route> lstRoute = await routeWrapper.List();

            int      flightScheduleOfCurrentRoute = 0;
            int      maxFlightSchedulePerRoute    = 15;
            DateTime startingDate         = DateTime.Now;
            int      currentAirplaneIndex = 0;
            int      count = 0;

            for (int routeIndex = 0, maxRouteIndex = lstRoute.Count - 1; routeIndex <= maxRouteIndex; routeIndex++)
            {
                Route currentRoute = lstRoute[routeIndex];

                do
                {
                    Airplane            currentAirplane     = lstAirplane[currentAirplaneIndex++];
                    AirplaneType        currentAirplaneType = lstAirplaneType.Find(at => at.ID == currentAirplane.TypeID);
                    List <AirplaneInfo> currentAirplaneInfo = lstAirplaneInfo.Where(ai => ai.AirplaneTypeID == currentAirplaneType.ID).ToList();
                    DateTime            departureDate       = startingDate.AddDays(flightScheduleOfCurrentRoute);

                    FlightSchedule flightSchedule = new FlightSchedule()
                    {
                        AirplaneCode      = currentAirplane.AirplaneCode,
                        RouteID           = currentRoute.ID,
                        DepartureDate     = departureDate,
                        FirstSeatAvail    = currentAirplaneInfo.Find(ai => ai.ClassID == 1).SeatCount,
                        BusinessSeatAvail = currentAirplaneInfo.Find(ai => ai.ClassID == 2).SeatCount,
                        ClubSeatAvail     = currentAirplaneInfo.Find(ai => ai.ClassID == 3).SeatCount,
                        IsActive          = true
                    };

                    if (await flightScheduleWrapper.Post(flightSchedule))
                    {
                        Console.WriteLine("Add flight schedule #{0} success!", ++count);
                    }
                    else
                    {
                        Console.WriteLine("Add flight schedule #{0} failed!", ++count);
                    }

                    if (currentAirplaneIndex >= lstAirplane.Count)
                    {
                        currentAirplaneIndex = 0;
                    }
                } while (++flightScheduleOfCurrentRoute < maxFlightSchedulePerRoute);

                flightScheduleOfCurrentRoute = 0;
            }

            DateTime endTime = DateTime.Now;

            Console.WriteLine("End at {0}", startTime);
            Console.WriteLine("Total time: {0}", (endTime - startTime).TotalSeconds);
        }