예제 #1
0
 protected void btnAddStudent_Click(object sender, EventArgs e)
 {
     if (!Page.IsValid)
     {
         return;
     }
     try
     {
         Profile pf = Profile.GetUser(Page.User.Identity.Name);
         if (String.IsNullOrEmpty(pf.Certificate) && !String.IsNullOrEmpty(txtCertificate.Text))
         {
             pf.Certificate           = txtCertificate.Text.LimitTo(30);
             pf.CertificateExpiration = mfbTypeInDateCFIExpiration.Date;
             pf.FCommit();
         }
         CFIStudentMapRequest smr = m_sm.GetRequest(CFIStudentMapRequest.RoleType.RoleStudent, txtStudentEmail.Text);
         smr.Send();
         lblAddStudentSuccess.Text     = String.Format(CultureInfo.CurrentCulture, Resources.Profile.EditProfileRequestHasBeenSent, HttpUtility.HtmlEncode(txtStudentEmail.Text));
         lblAddStudentSuccess.CssClass = "success";
         txtStudentEmail.Text          = "";
     }
     catch (MyFlightbookException ex)
     {
         lblAddStudentSuccess.Text     = ex.Message;
         lblAddStudentSuccess.CssClass = "error";
     }
 }
 protected void btnAddInstructor_Click(object sender, EventArgs e)
 {
     if (!Page.IsValid)
     {
         return;
     }
     try
     {
         CFIStudentMapRequest smr = m_sm.GetRequest(CFIStudentMapRequest.RoleType.RoleCFI, txtInstructorEmail.Text);
         smr.Send();
         lblAddInstructorSuccess.Text     = String.Format(CultureInfo.CurrentCulture, Resources.Profile.EditProfileRequestHasBeenSent, HttpUtility.HtmlEncode(txtInstructorEmail.Text));
         lblAddInstructorSuccess.CssClass = "success";
         txtInstructorEmail.Text          = "";
     }
     catch (MyFlightbookException ex)
     {
         lblAddInstructorSuccess.Text     = ex.Message;
         lblAddInstructorSuccess.CssClass = "error";
     }
 }
        protected void Page_Load(object sender, EventArgs e)
        {
            Master.SelectedTab = tabID.tabTraining;
            Master.Title       = String.Format(CultureInfo.CurrentCulture, Resources.LocalizedText.TitleProfile, Branding.CurrentBrand.AppName);

            string szReq = util.GetStringParam(Request, "req");

            try
            {
                if (szReq.Length == 0)
                {
                    throw new MyFlightbookValidationException(Resources.LocalizedText.AddRelationshipErrInvalidRequest);
                }

                m_smr = new CFIStudentMapRequest();
                m_smr.DecryptRequest(szReq);

                Profile pfRequestor = Profile.GetUser(m_smr.RequestingUser);
                if (!pfRequestor.IsValid())
                {
                    throw new MyFlightbookValidationException(Resources.LocalizedText.AddRelationshipErrInvalidUser);
                }

                Profile pfCurrent = Profile.GetUser(User.Identity.Name);
                if (pfCurrent.Email.CompareCurrentCultureIgnoreCase(m_smr.TargetUser) != 0 && !pfCurrent.IsVerifiedEmail(m_smr.TargetUser))
                {
                    throw new MyFlightbookValidationException(String.Format(CultureInfo.CurrentCulture, Resources.LocalizedText.AddRelationshipErrNotTargetUser, m_smr.TargetUser, pfCurrent.Email));
                }

                m_sm = new CFIStudentMap(User.Identity.Name);

                switch (m_smr.Requestedrole)
                {
                case CFIStudentMapRequest.RoleType.RoleStudent:
                    lblRequestDesc.Text = String.Format(CultureInfo.CurrentCulture, Resources.LocalizedText.AddRelationshipRequestStudent, Branding.CurrentBrand.AppName, HttpUtility.HtmlEncode(pfRequestor.UserFullName));
                    if (m_sm.IsStudentOf(m_smr.RequestingUser))
                    {
                        throw new MyFlightbookValidationException(String.Format(CultureInfo.CurrentCulture, Resources.LocalizedText.AddRelationshipErrAlreadyStudent, pfRequestor.UserFullName));
                    }
                    break;

                case CFIStudentMapRequest.RoleType.RoleCFI:
                    lblRequestDesc.Text = String.Format(CultureInfo.CurrentCulture, Resources.LocalizedText.AddRelationshipRequestInstructor, Branding.CurrentBrand.AppName, HttpUtility.HtmlEncode(pfRequestor.UserFullName));
                    if (m_sm.IsInstructorOf(m_smr.RequestingUser))
                    {
                        throw new MyFlightbookValidationException(String.Format(CultureInfo.CurrentCulture, Resources.LocalizedText.AddRelationshipErrAlreadyInstructor, pfRequestor.UserFullName));
                    }
                    break;

                case CFIStudentMapRequest.RoleType.RoleInviteJoinClub:
                    if (m_smr.ClubToJoin == null)
                    {
                        throw new MyFlightbookValidationException(Resources.Club.errNoClubInRequest);
                    }
                    if (m_smr.ClubToJoin.HasMember(pfCurrent.UserName))
                    {
                        throw new MyFlightbookValidationException(String.Format(CultureInfo.CurrentCulture, Resources.Club.errAlreadyMember, m_smr.ClubToJoin.Name));
                    }
                    lblRequestDesc.Text = String.Format(CultureInfo.CurrentCulture, Resources.Club.AddMemberFromInvitation, m_smr.ClubToJoin.Name);
                    break;

                case CFIStudentMapRequest.RoleType.RoleRequestJoinClub:
                    if (m_smr.ClubToJoin == null)
                    {
                        throw new MyFlightbookValidationException(Resources.Club.errNoClubInRequest);
                    }
                    if (m_smr.ClubToJoin.HasMember(pfRequestor.UserName))
                    {
                        throw new MyFlightbookValidationException(String.Format(CultureInfo.CurrentCulture, Resources.Club.errAlreadyAddedMember, pfRequestor.UserFullName, m_smr.ClubToJoin.Name));
                    }
                    lblRequestDesc.Text = String.Format(CultureInfo.CurrentCulture, Resources.Club.AddMemberFromRequest, HttpUtility.HtmlEncode(pfRequestor.UserFullName), m_smr.ClubToJoin.Name);
                    break;
                }
            }
            catch (MyFlightbookValidationException ex)
            {
                pnlReviewRequest.Visible = false;
                lblError.Text            = ex.Message;
                pnlConfirm.Visible       = false;
            }
        }
예제 #4
0
    protected void wzRequestSigs_FinishButtonClick(object sender, WizardNavigationEventArgs e)
    {
        IEnumerable <LogbookEntry> lstFlights = SelectedFlights;

        string szCFIUsername = String.Empty;
        string szCFIEmail    = String.Empty;

        MyFlightbook.Profile pfCFI = null;


        bool fIsNewCFI = String.IsNullOrEmpty(cmbInstructors.SelectedValue);

        // Check In case the named email is already an instructor.
        CFIStudentMap sm = new CFIStudentMap(User.Identity.Name);

        if (fIsNewCFI && sm.IsStudentOf(txtCFIEmail.Text))
        {
            fIsNewCFI = false;
            foreach (InstructorStudent inst in sm.Instructors)
            {
                if (String.Compare(inst.Email, txtCFIEmail.Text, StringComparison.CurrentCultureIgnoreCase) == 0)
                {
                    pfCFI = inst;
                    break;
                }
            }
        }
        else
        {
            pfCFI = MyFlightbook.Profile.GetUser(cmbInstructors.SelectedValue);
        }

        if (fIsNewCFI)
        {
            szCFIEmail = txtCFIEmail.Text;
        }
        else
        {
            szCFIUsername = pfCFI.UserName;
        }

        // check if we already know the email

        foreach (LogbookEntry le in lstFlights)
        {
            le.RequestSignature(szCFIUsername, szCFIEmail);
        }

        // Now send the email
        if (fIsNewCFI)
        {
            CFIStudentMapRequest smr = sm.GetRequest(CFIStudentMapRequest.RoleType.RoleCFI, szCFIEmail);
            smr.Send();
        }
        else
        {
            Profile pf = MyFlightbook.Profile.GetUser(User.Identity.Name);
            using (MailMessage msg = new MailMessage())
            {
                msg.From = new MailAddress(Branding.CurrentBrand.EmailAddress, String.Format(System.Globalization.CultureInfo.CurrentCulture, Resources.SignOff.EmailSenderAddress, Branding.CurrentBrand.AppName, pf.UserFullName));
                msg.ReplyToList.Add(new MailAddress(pf.Email, pf.UserFullName));
                msg.To.Add(new MailAddress(pfCFI.Email, pfCFI.UserFullName));
                msg.Subject = String.Format(System.Globalization.CultureInfo.CurrentCulture, Resources.SignOff.SignRequestSubject, pf.UserFullName, Branding.CurrentBrand.AppName);

                string szURL = String.Format(System.Globalization.CultureInfo.InvariantCulture, "https://{0}{1}/{2}", Request.Url.Host, ResolveUrl("~/Member/Training.aspx"), tabID.instStudents.ToString());

                msg.Body = Branding.ReBrand(Resources.SignOff.SignInvitationExisting).Replace("<% SignPendingFlightsLink %>", szURL).Replace("<% Requestor %>", pf.UserFullName);
                util.SendMessage(msg);
            }
        }

        Response.Redirect(String.Format(System.Globalization.CultureInfo.InvariantCulture, "~/Member/Training.aspx/{0}", tabID.instSignFlights));
    }