Example #1
0
        /// <summary>
        /// Updated existing Base in the database
        /// </summary>
        /// <param name="obj">Base object to be Updated in the database</param>
        /// <returns>success or failure</returns>
        public override ServiceResultEnum Update(ref Base obj)
        {
            // Number of changes as a result of the database change
            NumberChanges = 0;
            try
            {
                // Perform data access using the context
                using (var context = new HuskyRescueEntities())
                {
                    // convert to database object
                    var dbObj = obj.ToModel();

                    // add to the database and retrieve the updated object back (namely the GUID generated into the Id)
                    context.Entry(dbObj).State = EntityState.Modified;

                    for (var index = 0; index < obj.Addresses.Count; index++)
                    {
                        var address        = obj.Addresses[index];
                        var addressHandler = new AddressHandler();
                        addressHandler.Update(ref address);
                    }
                    for (var index = 0; index < obj.EmailAddresses.Count; index++)
                    {
                        var address        = obj.EmailAddresses[index];
                        var addressHandler = new EmailAddressHandler();
                        addressHandler.Update(ref address);
                    }
                    for (var index = 0; index < obj.PhoneNumbers.Count; index++)
                    {
                        var phone        = obj.PhoneNumbers[index];
                        var phoneHandler = new PhoneNumberHandler();
                        phoneHandler.Update(ref phone);
                    }

                    // commit changes to the database
                    NumberChanges = context.SaveChanges();

                    // convert the database object back to a presentation object with included changes from the database (if any)
                    obj = dbObj.ToViewModel();
                }
            }
            catch (InvalidOperationException ex)
            {
                Trace.WriteLine(ex.Message);
            }
            catch (ValidationException ex)
            {
                Trace.WriteLine(ex.Message);
            }
            catch (Exception ex)
            {
                Trace.WriteLine(ex.Message);
            }

            return(NumberChanges > 0 ? ServiceResultEnum.Success : ServiceResultEnum.Failure);
        }
Example #2
0
        public ServiceResultEnum Create(Base obj, bool onlyCreateRelatedObjects)
        {
            // Number of changes as a result of the database change
            NumberChanges = 0;
            try
            {
                // Perform data access using the context
                using (var context = new HuskyRescueEntities())
                {
                    // convert to database object
                    var dbObj = obj.ToModel();

                    if (!onlyCreateRelatedObjects)
                    {
                        // add to the database and retrieve the updated object back (namely the GUID generated into the Id)
                        dbObj = context.Entity_Base.Add(dbObj);
                    }

                    for (var index = 0; index < obj.Addresses.Count; index++)
                    {
                        var address = obj.Addresses[index];
                        if (!address.ID.Equals(Guid.Empty))
                        {
                            continue;
                        }
                        if (!obj.ID.Equals(Guid.Empty) && address.ID.Equals(Guid.Empty))
                        {
                            address.EntityID = obj.ID;
                        }
                        var addressHandler = new AddressHandler();
                        addressHandler.Create(ref address);
                    }
                    for (var index = 0; index < obj.EmailAddresses.Count; index++)
                    {
                        var address = obj.EmailAddresses[index];
                        if (address.ID != 0)
                        {
                            continue;
                        }
                        if (!obj.ID.Equals(Guid.Empty) && address.ID == 0)
                        {
                            address.EntityID = obj.ID;
                        }
                        var addressHandler = new EmailAddressHandler();
                        addressHandler.Create(ref address);
                    }
                    for (var index = 0; index < obj.PhoneNumbers.Count; index++)
                    {
                        var phone = obj.PhoneNumbers[index];
                        if (phone.ID != 0)
                        {
                            continue;
                        }
                        if (!obj.ID.Equals(Guid.Empty) && phone.ID == 0)
                        {
                            phone.EntityID = obj.ID;
                        }
                        var phoneHandler = new PhoneNumberHandler();
                        phoneHandler.Create(ref phone);
                    }

                    // commit changes to the database
                    NumberChanges = context.SaveChanges();

                    // convert the database object back to a presentation object with included changes from the database (if any)
                    obj = dbObj.ToViewModel();
                }
            }
            catch (InvalidOperationException ex)
            {
                Trace.WriteLine(ex.Message);
            }
            catch (ValidationException ex)
            {
                Trace.WriteLine(ex.Message);
            }
            catch (Exception ex)
            {
                Trace.WriteLine(ex.Message);
            }

            return(NumberChanges > 0 ? ServiceResultEnum.Success : ServiceResultEnum.Failure);
        }