Esempio n. 1
0
 public SavedEventArgs(Member member)
 {
     Member = member;
 }
Esempio n. 2
0
        protected void SaveButton_Click(object sender, EventArgs e)
        {
            // Om valideringen är OK så...
            if (Page.IsValid)
            {
                try
                {
                    // ...skapa ett nytt Member-objekt och initiera det
                    // med värdena från textfälten och...
                    Member member = new Member
                    {
                        MemberId = MemberId,
                        Name = Name,
                        Username = Username,
                        Mail = Mail,
                        Password = Password
                    };

                    // ...veriferera att objektet uppfyller affärsreglerna...
                    if (!member.IsValid)
                    {
                        // ...visa felmeddelanden om vad som
                        // orsakade att valideringen misslyckades.
                        AddErrorMessage(member);
                        return;
                    }

                    // ...spara objektet.
                    Service service = new Service();
                    service.SaveMember(member);

                    // Om någon abbonerar på händelsen Saved...
                    if (Saved != null)
                    {
                        // ...utlöses händelsen Saved och skickar med
                        // en referens till kunduppgifterna som sparats.
                        Saved(this, new SavedEventArgs(member));
                    }
                }
                catch
                {
                    // ...visas ett felmeddelande.
                    AddErrorMessage(Strings.Member_Saving_Error);
                }
            }
        }
Esempio n. 3
0
        /// <summary>
        /// Uppdaterar en kunds kunduppgifter i tabellen Member.
        /// </summary>
        /// <param name="member">Kunduppgifter som ska uppdateras.</param>
        public void UpdateMember(Member member)
        {
            // Skapar och initierar ett anslutningsobjekt.
            using (MySqlConnection conn = CreateConnection())
            {
                try
                {
                    // Skapar och initierar ett SqlCommand-objekt som används till att
                    // exekveras specifierad lagrad procedur.
                    MySqlCommand cmd = new MySqlCommand("app.uspUpdateMember", conn);
                    cmd.CommandType = CommandType.StoredProcedure;

                    //@TODO: Kolla så att längden är rätt

                    // Lägger till de paramterar den lagrade proceduren kräver. Använder här det effektiva sätttet att
                    // göra det på - något "svårare" men ASP.NET behöver inte "jobba" så mycket.
                    cmd.Parameters.Add("@MemberId", MySqlDbType.Int32, 4).Value = member.MemberId;
                    cmd.Parameters.Add("@Name", MySqlDbType.VarChar, 30).Value = member.Name;
                    cmd.Parameters.Add("@Mail", MySqlDbType.VarChar, 50).Value = member.Mail;
                    cmd.Parameters.Add("@Username", MySqlDbType.VarChar, 20).Value = member.Username;
                    cmd.Parameters.Add("@Password", MySqlDbType.VarChar, 30).Value = member.Password;

                    // Öppnar anslutningen till databasen.
                    conn.Open();

                    // Den lagrade proceduren innehåller en UPDATE-sats och returnerar inga poster varför metoden
                    // ExecuteNonQuery används för att exekvera den lagrade proceduren.
                    cmd.ExecuteNonQuery();
                }
                catch
                {
                    // Kastar ett eget undantag om ett undantag kastas.
                    throw new ApplicationException(GenericErrorMessage);
                }
            }
        }
Esempio n. 4
0
 /// <summary>
 /// Spara en kunds kunduppgifter i databasen.
 /// </summary>
 /// <param name="member">Kunduppgifter som ska sparas.</param>
 public void SaveMember(Member member)
 {
     // Klarar objektet validering i affärslogiklagret?
     if (member.IsValid)
     {
         // Member-objektet sparas antingen genom att en ny post
         // skapas eller genom att en befintlig post uppdateras.
         if (member.MemberId == 0) // Ny post om MemberId är 0!
         {
             MemberDAL.InsertMember(member);
         }
         else
         {
             MemberDAL.UpdateMember(member);
         }
     }
     else
     {
         // Uppfyller inte objektet affärsreglerna kastas ett undantag med
         // ett allmänt felmeddelande samt en referens till objektet som
         // inte klarade valideringen.
         ApplicationException ex = new ApplicationException(member.Error);
         ex.Data.Add("Member", member);
         throw ex;
     }
 }
Esempio n. 5
0
        /// <summary>
        /// Skapar en ny post i tabellen Member.
        /// </summary>
        /// <param name="member">Kunduppgifter som ska läggas till.</param>
        public void InsertMember(Member member)
        {
            // Skapar och initierar ett anslutningsobjekt.
            using (MySqlConnection conn = CreateConnection())
            {
                try
                {
                    // Skapar och initierar ett SqlCommand-objekt som används till att
                    // exekveras specifierad lagrad procedur.
                    MySqlCommand cmd = new MySqlCommand("app.uspInsertMember", conn); //@TODO: Kolla proceduren
                    cmd.CommandType = CommandType.StoredProcedure;

                    //@TODO: kolla så att längden stämmer

                    // Lägger till de paramterar den lagrade proceduren kräver. Använder här det effektiva sätttet att
                    // göra det på - något "svårare" men ASP.NET behöver inte "jobba" så mycket.
                    cmd.Parameters.Add("@Name", MySqlDbType.VarChar, 30).Value = member.Name;
                    cmd.Parameters.Add("@Mail", MySqlDbType.VarChar, 50).Value = member.Mail;
                    cmd.Parameters.Add("@Username", MySqlDbType.VarChar, 30).Value = member.Username;
                    cmd.Parameters.Add("@Password", MySqlDbType.VarChar, 20).Value = member.Password;

                    // Den här parametern är lite speciell. Den skickar inte något data till den lagrade proceduren,
                    // utan hämtar data från den. (Fungerar ungerfär som ref- och out-prameterar i C#.) Värdet
                    // parametern kommer att ha EFTER att den lagrade proceduren exekverats är primärnycklens värde
                    // den nya posten blivit tilldelad av databasen.
                    cmd.Parameters.Add("@MemberId", MySqlDbType.Int32, 4).Direction = ParameterDirection.Output;

                    // Öppnar anslutningen till databasen.
                    conn.Open();

                    // Den lagrade proceduren innehåller en INSERT-sats och returnerar inga poster varför metoden
                    // ExecuteNonQuery används för att exekvera den lagrade proceduren.
                    cmd.ExecuteNonQuery();

                    // Hämtar primärnyckelns värde för den nya posten och tilldelar Member-objektet värdet.
                    member.MemberId = (int)cmd.Parameters["@MemberId"].Value;
                }
                catch
                {
                    // Kastar ett eget undantag om ett undantag kastas.
                    throw new ApplicationException(GenericErrorMessage);
                }
            }
        }