/// <summary>
 /// Lägger till en kunds kunduppgifter i databasen.
 /// </summary>
 /// <param name="customer"></param>
 public void CustomerListView_InsertItem(Customer customer)
 {
     if (ModelState.IsValid)
     {
         try
         {
             Service.SaveCustomer(customer);
         }
         catch (Exception ex)
         {
             //var validationResults = ex.Data["ValidationResults"] as IEnumerable<ValidationResult>;
             //if (validationResults != null && validationResults.Any())
             //{
             //    foreach (var validationResult in validationResults)
             //    {
             //        foreach (var memberName in validationResult.MemberNames)
             //        {
             //            ModelState.AddModelError(memberName, validationResult.ErrorMessage);
             //        }
             //    }
             //}
             ModelState.AddModelError(String.Empty, "Ett oväntat fel inträffade då kunduppgiften skulle läggas till.");
         }
     }
 }
 /// <summary>
 /// Lägger till en kunds kunduppgifter i databasen.
 /// </summary>
 /// <param name="customer"></param>
 public void CustomerListView_InsertItem(Customer customer)
 {
     try
     {
         Service.SaveCustomer(customer);
     }
     catch (Exception)
     {
         ModelState.AddModelError(String.Empty, "Ett oväntat fel inträffade då kunduppgiften skulle läggas till.");
     }
 }
 /// <summary>
 /// Spara en kunds kunduppgifter i databasen.
 /// </summary>
 /// <param name="customer">Kunduppgifter som ska sparas.</param>
 public void SaveCustomer(Customer customer)
 {
     // Customer-objektet sparas antingen genom att en ny post
     // skapas eller genom att en befintlig post uppdateras.
     // ======================================================
     // OBS! HÄR SAKNAS VALIDERING I AFFÄRSLOGIKLAGRET!!!!!
     //      Se senare versioner av Kundkontakter för korrekt
     //      implementering.
     // ======================================================
     if (customer.CustomerId == 0) // Ny post om CustomerId är 0!
     {
         CustomerDAL.InsertCustomer(customer);
     }
     else
     {
         CustomerDAL.UpdateCustomer(customer);
     }
 }
        public void CustomerFormView_InsertItem(Customer customer)
        {
            if (Page.ModelState.IsValid)
            {
                try
                {
                    Service.SaveCustomer(customer);

                    // Spara (rätt)meddelande och dirigera om klienten till lista med kunder.
                    // (Meddelandet sparas i en "temporär" sessionsvariabel som kapslas
                    // in av en "extension method" i App_Infrastructure/PageExtensions.)
                    // Del av designmönstret Post-Redirect-Get (PRG, http://en.wikipedia.org/wiki/Post/Redirect/Get).
                    Page.SetTempData("SuccessMessage", "Kunden lades till.");
                    Response.RedirectToRoute("CustomerDetails", new { id = customer.CustomerId });
                    Context.ApplicationInstance.CompleteRequest();
                }
                catch (Exception)
                {
                    Page.ModelState.AddModelError(String.Empty, "Fel inträffade då kunden skulle läggas till.");
                }
            }
        }
        public void CustomerFormView_InsertItem(Customer customer)
        {
            if (ModelState.IsValid)
            {
                try
                {
                    Service service = new Service();
                    service.SaveCustomer(customer);

                    // Spara (rätt)meddelande och dirigera om klienten till lista med kunder.
                    // (Meddelandet sparas i en "temporär" sessionsvariabel som kapslas
                    // in av en "extension method" i App_Infrastructure/PageExtensions.)
                    // Del av designmönstret Post-Redirect-Get (PRG, http://en.wikipedia.org/wiki/Post/Redirect/Get).
                    Page.SetTempData("Message", String.Format("Kunden '{0}' lades till.", customer.Name));
                    Response.RedirectToRoute("Customers");
                }
                catch (Exception)
                {
                    ModelState.AddModelError(String.Empty, "Ett oväntat fel inträffade då kunduppgiften skulle läggas till.");
                }
            }
        }
        /// <summary>
        /// Spara en kunds kunduppgifter i databasen.
        /// </summary>
        /// <param name="customer">Kunduppgifter som ska sparas.</param>
        public void SaveCustomer(Customer customer)
        {
            //var validationContext = new ValidationContext(customer);
            //var validationResults = new List<ValidationResult>();
            //if (!Validator.TryValidateObject(customer, validationContext, validationResults, true))
            //{
            //    // Uppfyller inte objektet affärsreglerna kastas ett undantag med
            //    // ett allmänt felmeddelande samt en referens till samlingen med
            //    // resultat av valideringen.
            //    var ex = new ValidationException("Objektet klarade inte valideringen.");
            //    ex.Data.Add("ValidationResults", validationResults);
            //    throw ex;
            //}

            // Uppfyller inte objektet affärsreglerna...
            ICollection<ValidationResult> validationResults;
            if (!customer.Validate(out validationResults)) // Använder "extension method" för valideringen!
            {                                              // Klassen finns under App_Infrastructure.
                // ...kastas ett undantag med ett allmänt felmeddelande samt en referens
                // till samlingen med resultat av valideringen.
                var ex = new ValidationException("Objektet klarade inte valideringen.");
                ex.Data.Add("ValidationResults", validationResults);
                throw ex;
            }

            // Customer-objektet sparas antingen genom att en ny post
            // skapas eller genom att en befintlig post uppdateras.
            if (customer.CustomerId == 0) // Ny post om CustomerId är 0!
            {
                CustomerDAL.InsertCustomer(customer);
            }
            else
            {
                CustomerDAL.UpdateCustomer(customer);
            }
        }