コード例 #1
0
        public static Endorsement EndorsementWithID(int id)
        {
            DBHelper    dbh = new DBHelper("SELECT *, LENGTH(DigitizedSignature) AS FileSize FROM Endorsements WHERE id=?idEndorsement");
            Endorsement en  = null;

            dbh.ReadRow((comm) => { comm.Parameters.AddWithValue("idEndorsement", id); }, (dr) => { en = new Endorsement(dr); });
            return(en);
        }
コード例 #2
0
 protected void gvExistingEndorsements_RowDataBound(object sender, GridViewRowEventArgs e)
 {
     if (e != null && e.Row.RowType == DataControlRowType.DataRow)
     {
         Endorsement             endorsement    = (Endorsement)e.Row.DataItem;
         Controls_mfbEndorsement mfbEndorsement = (Controls_mfbEndorsement)e.Row.FindControl("mfbEndorsement1");
         mfbEndorsement.SetEndorsement(endorsement);
     }
 }
コード例 #3
0
        protected void btnAddEndorsement_Click(object sender, EventArgs e)
        {
            if (Page.IsValid && NewEndorsement != null)
            {
                Endorsement endorsement;

                switch (Mode)
                {
                default:
                case EndorsementMode.InstructorOfflineStudent:
                case EndorsementMode.InstructorPushAuthenticated:
                {
                    Profile pf = MyFlightbook.Profile.GetUser(Page.User.Identity.Name);
                    endorsement = new Endorsement(Page.User.Identity.Name)
                    {
                        CFICertificate = pf.Certificate, CFIExpirationDate = pf.CertificateExpiration
                    };
                    if (!pf.CertificateExpiration.HasValue() && mfbDateCertExpiration.Date.HasValue())
                    {
                        endorsement.CFIExpirationDate = pf.CertificateExpiration = mfbDateCertExpiration.Date;
                        pf.FCommit();           // save it to the profile.
                    }
                }
                break;

                case EndorsementMode.StudentPullAdHoc:
                    endorsement = new Endorsement(string.Empty)
                    {
                        CFICachedName = txtCFI.Text, CFICertificate = txtCFICert.Text, CFIExpirationDate = mfbDateCertExpiration.Date
                    };
                    endorsement.SetDigitizedSig(mfbScribbleSignature.Base64Data());
                    if (endorsement.GetDigitizedSig() == null)
                    {
                        return;
                    }
                    break;

                case EndorsementMode.StudentPullAuthenticated:
                    endorsement = new Endorsement(SourceUser.UserName)
                    {
                        CFICertificate = SourceUser.Certificate, CFIExpirationDate = SourceUser.CertificateExpiration
                    };
                    break;
                }

                endorsement.Date            = mfbTypeInDate1.Date;
                endorsement.EndorsementText = TemplateText();
                endorsement.StudentType     = StudentType;
                endorsement.StudentName     = StudentType == Endorsement.StudentTypes.Member ? TargetUser.UserName : txtOfflineStudent.Text;
                endorsement.Title           = txtTitle.Text;
                endorsement.FARReference    = lblEndorsementFAR.Text;

                NewEndorsement(this, new EndorsementEventArgs(endorsement));
            }
        }
コード例 #4
0
        public void SetEndorsement(Endorsement e)
        {
            if (e == null)
            {
                throw new ArgumentNullException(nameof(e));
            }

            int id = 1;  // freeform

            hdnEndorsementID.Value = id.ToString(CultureInfo.InvariantCulture);
            UpdateFormForTemplate(id, true, e.EndorsementText);
            txtTitle.Text = e.Title;
        }
コード例 #5
0
        protected void lnkDownload_Click(object sender, EventArgs e)
        {
            gvDownload.DataSource = Endorsement.EndorsementsForUser(Student, Instructor, CurSortDirection, CurSortKey);
            gvDownload.DataBind();
            Response.ContentType = "text/csv";
            // Give it a name that is the brand name, user's name, and date.  Convert spaces to dashes, and then strip out ANYTHING that is not alphanumeric or a dash.
            string szFilename    = String.Format(CultureInfo.CurrentCulture, "{0}-{1}-{2}", Branding.CurrentBrand.AppName, Resources.SignOff.DownloadEndorsementsFilename, String.IsNullOrEmpty(Student) ? Resources.SignOff.DownloadEndorsementsAllStudents : MyFlightbook.Profile.GetUser(Student).UserFullName);
            string szDisposition = String.Format(CultureInfo.InvariantCulture, "attachment;filename={0}.csv", Regex.Replace(szFilename, "[^0-9a-zA-Z-]", ""));

            Response.AddHeader("Content-Disposition", szDisposition);
            gvDownload.ToCSV(Response.OutputStream);
            Response.End();
        }
コード例 #6
0
        /// <summary>
        /// Refreshes (databinds) the list of endorsements
        /// </summary>
        /// <returns># of endorsements bound</returns>
        public int RefreshEndorsements()
        {
            IEnumerable <Endorsement> rg = Endorsement.RemoveEndorsementsByInstructor(Endorsement.EndorsementsForUser(Student, Instructor, CurSortDirection, CurSortKey), ExcludeInstructor);

            gvExistingEndorsements.DataSource = rg;
            gvExistingEndorsements.DataBind();

            int cItems = rg.Count();

            gvExistingEndorsements.ShowHeader = cItems > 0;
            if (cItems > 0)
            {
                LinkButton lbSortDate  = (LinkButton)gvExistingEndorsements.HeaderRow.FindControl("lnkSortDate");
                LinkButton lbSortTitle = (LinkButton)gvExistingEndorsements.HeaderRow.FindControl("lnkSortTitle");
                lbSortDate.CssClass  = String.Format(CultureInfo.InvariantCulture, "headerBase{0}", CurSortKey == EndorsementSortKey.Date ? (CurSortDirection == SortDirection.Ascending ? " headerSortAsc" : " headerSortDesc") : string.Empty);
                lbSortTitle.CssClass = String.Format(CultureInfo.InvariantCulture, "headerBase{0}", CurSortKey == EndorsementSortKey.Title ? (CurSortDirection == SortDirection.Ascending ? " headerSortAsc" : " headerSortDesc") : string.Empty);
            }

            lnkDownload.Visible = !String.IsNullOrEmpty(Instructor) && cItems > 0;

            return(cItems);
        }
コード例 #7
0
 public EndorsementEventArgs(Endorsement e = null)
     : base()
 {
     this.Endorsement = e;
 }
コード例 #8
0
 protected bool CanCopy(Endorsement e)
 {
     return(e != null && e.IsMemberEndorsement && e.StudentName.CompareCurrentCultureIgnoreCase(Page.User.Identity.Name) != 0);
 }
コード例 #9
0
 protected bool CanDelete(Endorsement e)
 {
     return(e != null && ShowDelete && e.StudentName.CompareCurrentCultureIgnoreCase(Page.User.Identity.Name) == 0);
 }
コード例 #10
0
        protected void gvExistingEndorsements_RowCommand(object sender, CommandEventArgs e)
        {
            if (e == null || String.IsNullOrEmpty(e.CommandArgument.ToString()))
            {
                return;
            }

            int id = Convert.ToInt32(e.CommandArgument, CultureInfo.InvariantCulture);

            try
            {
                if (id <= 0)
                {
                    throw new MyFlightbookException("Invalid endorsement ID to delete");
                }

                if (e.CommandName.CompareOrdinalIgnoreCase("_DeleteExternal") == 0 && !String.IsNullOrEmpty(e.CommandArgument.ToString()))
                {
                    List <Endorsement> rgEndorsements = new List <Endorsement>(Endorsement.EndorsementsForUser(null, Page.User.Identity.Name));

                    Endorsement en = rgEndorsements.FirstOrDefault(en2 => en2.ID == id);
                    if (en == null)
                    {
                        throw new MyFlightbookException("ID of endorsement to delete is not found in owners endorsements");
                    }

                    if (en.StudentType == Endorsement.StudentTypes.Member)
                    {
                        throw new MyFlightbookException(Resources.SignOff.errCantDeleteMemberEndorsement);
                    }

                    en.FDelete();
                    RefreshEndorsements();
                }
                else if (e.CommandName.CompareOrdinalIgnoreCase("_DeleteOwned") == 0 && !String.IsNullOrEmpty(e.CommandArgument.ToString()))
                {
                    List <Endorsement> rgEndorsements = new List <Endorsement>(Endorsement.EndorsementsForUser(Page.User.Identity.Name, null));
                    Endorsement        en             = rgEndorsements.FirstOrDefault(en2 => en2.ID == id);

                    if (en == null)
                    {
                        throw new MyFlightbookException("Can't find endorsement with ID=" + id.ToString(CultureInfo.InvariantCulture));
                    }

                    if (en.StudentType == Endorsement.StudentTypes.External)
                    {
                        throw new MyFlightbookException("Can't delete external endorsement with ID=" + id.ToString(CultureInfo.InvariantCulture));
                    }

                    en.FDelete();
                    RefreshEndorsements();
                }
                else if (e.CommandName.CompareOrdinalIgnoreCase("_Copy") == 0 && !String.IsNullOrEmpty(e.CommandArgument.ToString()))
                {
                    Endorsement en = Endorsement.EndorsementWithID(Convert.ToInt32(e.CommandArgument, CultureInfo.InvariantCulture));

                    if (en == null)
                    {
                        throw new MyFlightbookException("Can't find endorsement with ID=" + id.ToString(CultureInfo.InvariantCulture));
                    }

                    if (en.StudentType == Endorsement.StudentTypes.External)
                    {
                        throw new MyFlightbookException("Can't copy external endorsement with ID=" + id.ToString(CultureInfo.InvariantCulture));
                    }

                    CopyEndorsement?.Invoke(this, new EndorsementEventArgs(en));
                }
            }
            catch (MyFlightbookException ex)
            {
                lblErr.Text = ex.Message;
            }
        }