Ejemplo n.º 1
0
        protected void btnCheckAll_Click(object sender, EventArgs e)
        {
            UInt32 selectedOptions = SelectedOptions;

            if (selectedOptions == 0)
            {
                lblErr.Text = Resources.FlightLint.errNoOptionsSelected;
                return;
            }

            FlightQuery fq = new FlightQuery(Page.User.Identity.Name);

            if (mfbDateLastCheck.Date.HasValue())
            {
                fq.DateRange = FlightQuery.DateRanges.Custom;
                fq.DateMin   = mfbDateLastCheck.Date;
            }
            DBHelperCommandArgs            dbhq = LogbookEntryBase.QueryCommand(fq, fAsc: true);
            IEnumerable <LogbookEntryBase> rgle = LogbookEntryDisplay.GetFlightsForQuery(dbhq, Page.User.Identity.Name, "Date", SortDirection.Ascending, false, false);

            BindFlights(new FlightLint().CheckFlights(rgle, Page.User.Identity.Name, selectedOptions, mfbDateLastCheck.Date), rgle.Count());

            Response.Cookies[szCookieLastCheck].Value   = DateTime.Now.YMDString();
            Response.Cookies[szCookieLastCheck].Expires = DateTime.Now.AddYears(5);
        }
Ejemplo n.º 2
0
        protected void RefreshFormData()
        {
            FlightQuery fq = mfbSearchForm1.Restriction;

            MfbLogbook1.Restriction = new FlightQuery(fq);  // before we muck with the query below, copy it here.

            fq.Refresh();
            DBHelperCommandArgs args = new DBHelperCommandArgs()
            {
                Timeout = 120
            };

            args.AddFrom(fq.QueryParameters());

            UpdateDescription();

            IEnumerable <Form8710Row>    lst8710   = null;
            IEnumerable <ModelRollupRow> lstModels = null;

            // get the various reports.  This can be a bit slow, so do all of the queries in parallel asynchronously.
            try
            {
                Task.WaitAll(
                    Task.Run(() => { ClassTotals = Form8710ClassTotal.ClassTotalsForQuery(fq, args); }),
                    Task.Run(() => { lst8710 = Form8710Row.Form8710ForQuery(fq, args); }),
                    Task.Run(() => { lstModels = ModelRollupRow.ModelRollupForQuery(fq, args); }),
                    Task.Run(() => { RefreshTimePeriodRollup(); }),
                    Task.Run(() =>
                {
                    if (!Master.IsMobileSession())
                    {
                        MfbLogbook1.RefreshData();
                    }
                })
                    );
            }
            catch (MySqlException ex)
            {
                throw new MyFlightbookException(String.Format(CultureInfo.CurrentCulture, "Error getting 8710 data for user {0}: {1}", Page.User.Identity.Name, ex.Message), ex, Page.User.Identity.Name);
            }

            // Do the databinding itself AFTER the async queries, since databinding may not be thread safe.
            gvRollup.DataSource = lstModels;
            gvRollup.DataBind();
            if (gvRollup.Rows.Count > 0)
            {
                gvRollup.Rows[gvRollup.Rows.Count - 1].Font.Bold = true;
            }

            gv8710.DataSource = lst8710;
            gv8710.DataBind();
        }
Ejemplo n.º 3
0
        private static Dictionary <string, VisitedAirport> PopulateAirports(DBHelperCommandArgs commandArgs)
        {
            Dictionary <string, VisitedAirport> dictVA = new Dictionary <string, VisitedAirport>();

            DBHelper dbh = new DBHelper(commandArgs);

            dbh.ReadRows(
                (comm) => { },
                (dr) =>
            {
                // ignore anything not in a real aircraft.
                AircraftInstanceTypes instanceType = (AircraftInstanceTypes)Convert.ToInt32(dr["InstanceType"], CultureInfo.InvariantCulture);
                if (instanceType != AircraftInstanceTypes.RealAircraft)
                {
                    return;
                }

                DateTime dtFlight = Convert.ToDateTime(dr["date"], CultureInfo.InvariantCulture);
                string szRoute    = dr["route"].ToString();
                int idFlight      = Convert.ToInt32(dr["idflight"], CultureInfo.InvariantCulture);

                decimal total = Convert.ToDecimal(util.ReadNullableField(dr, "totalFlightTime", 0.0M), CultureInfo.InvariantCulture);
                decimal PIC   = Convert.ToDecimal(util.ReadNullableField(dr, "PIC", 0.0M), CultureInfo.InvariantCulture);
                decimal SIC   = Convert.ToDecimal(util.ReadNullableField(dr, "SIC", 0.0M), CultureInfo.InvariantCulture);
                decimal CFI   = Convert.ToDecimal(util.ReadNullableField(dr, "CFI", 0.0M), CultureInfo.InvariantCulture);
                decimal Dual  = Convert.ToDecimal(util.ReadNullableField(dr, "dualReceived", 0.0M), CultureInfo.InvariantCulture);

                // ignore any flight with no time logged.
                if (total + PIC + SIC + CFI + Dual == 0)
                {
                    return;
                }

                // we want to defer any db hit to the airport list until later, so we create an uninitialized airportlist
                // We then visit each airport in the flight.
                string[] rgszapFlight = AirportList.NormalizeAirportList(szRoute);

                for (int iAp = 0; iAp < rgszapFlight.Length; iAp++)
                {
                    string szap = rgszapFlight[iAp].ToUpperInvariant();

                    // If it's explicitly a navaid, ignore it
                    if (szap.StartsWith(airport.ForceNavaidPrefix, StringComparison.InvariantCultureIgnoreCase))
                    {
                        continue;
                    }

                    VisitedAirport va = dictVA.ContainsKey(szap) ? dictVA[szap] : null;

                    // Heuristic: if the flight only has a single airport, we visit that airport
                    // BUT if the flight has multiple airport codes, ignore the first airport in the list
                    // UNLESS we've never seen that airport before.  (E.g., fly commercial to Stockton to pick up 40FG).
                    if (iAp == 0 && va != null && rgszapFlight.Length > 1)
                    {
                        continue;
                    }

                    // for now, the key holds the airport code, since the airport itself within the visited airport is still null
                    if (va == null)
                    {
                        dictVA[szap] = va = new VisitedAirport(dtFlight)
                        {
                            FlightIDOfFirstVisit = idFlight
                        }
                    }
                    ;
                    else
                    {
                        va.VisitAirport(dtFlight, idFlight);
                    }
                }
            });

            return(dictVA);
        }
Ejemplo n.º 4
0
    protected void RefreshFormData()
    {
        FlightQuery fq = mfbSearchForm1.Restriction;

        fq.Refresh();

        string szRestrict         = fq.RestrictClause;
        string szQueryTemplate    = ConfigurationManager.AppSettings["8710ForUserQuery"].ToString();
        string szHaving           = String.IsNullOrEmpty(fq.HavingClause) ? string.Empty : "HAVING " + fq.HavingClause;
        string szQueryClassTotals = String.Format(CultureInfo.InvariantCulture, szQueryTemplate, szRestrict, szHaving, "f.InstanceTypeID, f.CatClassID");
        string szQueryMain        = String.Format(CultureInfo.InvariantCulture, szQueryTemplate, szRestrict, szHaving, "f.category");

        DBHelperCommandArgs args = new DBHelperCommandArgs(szQueryClassTotals);

        if (fq != null)
        {
            args.AddWithValue("localecode", System.Globalization.CultureInfo.CurrentCulture.Name.Replace("-", "_"));
            args.AddWithValue("shortDate", DBHelper.CSharpDateFormatToMySQLDateFormat());
            foreach (MySqlParameter p in fq.QueryParameters())
            {
                args.Parameters.Add(p);
            }
        }

        // get the class totals
        try
        {
            ClassTotals = new Dictionary <string, List <TotalsItem> >();
            DBHelper dbh = new DBHelper(args);
            dbh.ReadRows((c) => { }, (d) =>
            {
                string szCategory = (string)d["Category"];
                string szClass    = (string)d["Class"];
                string szCatClass = (string)d["CatClass"];
                if (!String.IsNullOrEmpty(szCategory) && !String.IsNullOrEmpty(szClass) && !String.IsNullOrEmpty(szCatClass))
                {
                    if (!ClassTotals.ContainsKey(szCategory))
                    {
                        ClassTotals[szCategory] = new List <TotalsItem>();
                    }
                    ClassTotals[szCategory].Add(new TotalsItem(szCatClass, Convert.ToDecimal(d["TotalTime"], CultureInfo.InvariantCulture)));
                }
            });
        }
        catch (MySqlException ex)
        {
            throw new MyFlightbookException(String.Format(CultureInfo.CurrentCulture, "Error getting 8710 data for user {0}: {1}", Page.User.Identity.Name, ex.Message), ex, Page.User.Identity.Name);
        }

        using (MySqlCommand comm = new MySqlCommand())
        {
            DBHelper.InitCommandObject(comm, args);
            using (comm.Connection)
            {
                MySqlDataReader dr = null;
                try
                {
                    comm.CommandText = szQueryMain;
                    comm.Connection.Open();
                    using (dr = comm.ExecuteReader())
                    {
                        gv8710.DataSource = dr;
                        gv8710.DataBind();
                        UpdateDescription();
                        if (!this.Master.IsMobileSession())
                        {
                            MfbLogbook1.Restriction = fq;
                            MfbLogbook1.RefreshData();
                        }
                    }
                }
                catch (Exception ex)
                {
                    throw new MyFlightbookException(String.Format(CultureInfo.CurrentCulture, "Error getting 8710 data for user {0}: {1}", Page.User.Identity.Name, ex.Message), ex, Page.User.Identity.Name);
                }
                finally
                {
                    if (comm.Connection != null && comm.Connection.State != ConnectionState.Closed)
                    {
                        comm.Connection.Close();
                    }
                }
            }
        }
    }
Ejemplo n.º 5
0
    protected void RefreshFormData()
    {
        FlightQuery fq = mfbSearchForm1.Restriction;

        fq.Refresh();

        string szRestrict         = fq.RestrictClause;
        string szQueryTemplate    = ConfigurationManager.AppSettings["8710ForUserQuery"];
        string szHaving           = String.IsNullOrEmpty(fq.HavingClause) ? string.Empty : "HAVING " + fq.HavingClause;
        string szQueryClassTotals = String.Format(CultureInfo.InvariantCulture, szQueryTemplate, szRestrict, szHaving, "f.InstanceTypeID, f.CatClassID");
        string szQueryMain        = String.Format(CultureInfo.InvariantCulture, szQueryTemplate, szRestrict, szHaving, "f.category");

        string szQueryRollup = String.Format(CultureInfo.InvariantCulture, ConfigurationManager.AppSettings["RollupGridQuery"], szRestrict, szHaving);


        DBHelperCommandArgs args = new DBHelperCommandArgs(szQueryClassTotals);

        if (fq != null)
        {
            foreach (MySqlParameter p in fq.QueryParameters())
            {
                args.Parameters.Add(p);
            }
        }

        // get the class totals
        try
        {
            ClassTotals = new Dictionary <string, List <ClassTotal> >();
            DBHelper dbh = new DBHelper(args);
            dbh.ReadRows((c) => { }, (d) =>
            {
                string szCategory = (string)d["Category"];
                string szClass    = (string)d["Class"];
                string szCatClass = (string)d["CatClass"];
                if (!String.IsNullOrEmpty(szCategory) && !String.IsNullOrEmpty(szClass) && !String.IsNullOrEmpty(szCatClass))
                {
                    if (!ClassTotals.ContainsKey(szCategory))
                    {
                        ClassTotals[szCategory] = new List <ClassTotal>();
                    }
                    List <ClassTotal> lst = ClassTotals[szCategory];
                    ClassTotal ct         = new ClassTotal()
                    {
                        ClassName = szCatClass,
                        Total     = Convert.ToDecimal(d["TotalTime"], CultureInfo.InvariantCulture),
                        PIC       = Convert.ToDecimal(d["PIC"], CultureInfo.InvariantCulture),
                        SIC       = Convert.ToDecimal(d["SIC"], CultureInfo.InvariantCulture)
                    };
                    lst.Add(ct);
                }
            });
        }
        catch (MySqlException ex)
        {
            throw new MyFlightbookException(String.Format(CultureInfo.CurrentCulture, "Error getting 8710 data for user {0}: {1}", Page.User.Identity.Name, ex.Message), ex, Page.User.Identity.Name);
        }

        using (MySqlCommand comm = new MySqlCommand())
        {
            DBHelper.InitCommandObject(comm, args);
            using (comm.Connection)
            {
                MySqlDataReader dr = null;
                try
                {
                    comm.CommandText = szQueryMain;
                    comm.Connection.Open();
                    using (dr = comm.ExecuteReader())
                    {
                        gv8710.DataSource = dr;
                        gv8710.DataBind();
                    }

                    comm.CommandText = szQueryRollup;
                    using (dr = comm.ExecuteReader())
                    {
                        gvRollup.DataSource = dr;
                        gvRollup.DataBind();
                        if (gvRollup.Rows.Count > 0)
                        {
                            gvRollup.Rows[gvRollup.Rows.Count - 1].Font.Bold = true;
                        }
                    }
                }
                catch (Exception ex)
                {
                    throw new MyFlightbookException(String.Format(CultureInfo.CurrentCulture, "Error getting 8710 data for user {0}: {1}", Page.User.Identity.Name, ex.Message), ex, Page.User.Identity.Name);
                }
                finally
                {
                    if (comm.Connection != null && comm.Connection.State != ConnectionState.Closed)
                    {
                        comm.Connection.Close();
                    }
                }
            }
        }

        UpdateDescription();
        if (!this.Master.IsMobileSession())
        {
            MfbLogbook1.Restriction = fq;
            MfbLogbook1.RefreshData();
        }
    }