public async Task <IHttpActionResult> PostCustomer(Customer customer)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            _unitOfWork.CustomerRepository.Insert(customer);

            try
            {
                // Save and accept changes
                await _unitOfWork.SaveChangesAsync();
            }
            catch (UpdateException)
            {
                if (_unitOfWork.CustomerRepository.Find(customer.CustomerId) == null)
                {
                    return(Conflict());
                }
                throw;
            }

            // Load related entities and accept changes
            await _unitOfWork.CustomerRepository.LoadRelatedEntitiesAsync(customer);

            customer.AcceptChanges();

            return(CreatedAtRoute("DefaultApi", new { id = customer.CustomerId }, customer));
        }
        public async Task <IHttpActionResult> PutCustomer(Customer customer)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            _unitOfWork.CustomerRepository.Update(customer);

            try
            {
                await _unitOfWork.SaveChangesAsync();
            }
            catch (UpdateConcurrencyException)
            {
                if (_unitOfWork.CustomerRepository.Find(customer.CustomerId) == null)
                {
                    return(Conflict());
                }
                throw;
            }

            await _unitOfWork.CustomerRepository.LoadRelatedEntitiesAsync(customer);

            customer.AcceptChanges();
            return(Ok(customer));
        }
        public async Task <IHttpActionResult> PutCustomer(Customer customer)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            _dbContext.ApplyChanges(customer);

            try
            {
                await _dbContext.SaveChangesAsync();
            }
            catch (DbUpdateConcurrencyException)
            {
                if (!_dbContext.Customers.Any(c => c.CustomerId == customer.CustomerId))
                {
                    return(Conflict());
                }
                throw;
            }

            await _dbContext.LoadRelatedEntitiesAsync(customer);

            customer.AcceptChanges();
            return(Ok(customer));
        }
示例#4
0
        private void RemoveInactive(Customer customer)
        {
            try
            {
                for (int i = customer.Projects.Count() - 1; i >= 0; i--)
                {
                    if (customer.Projects[i].Inactive)
                    {
                        customer.Projects.RemoveAt(i);
                    }
                    else
                    {
                        for (int y = customer.Projects[i].Tasks.Count() - 1; y >= 0; y--)
                        {
                            if (customer.Projects[i].Tasks[y].Inactive)
                            {
                                customer.Projects[i].Tasks.RemoveAt(y);
                            }
                        }
                        customer.Projects[i].MarkAsUnchanged();
                        customer.Projects[i].AcceptChanges();
                    }
                }

                customer.MarkAsUnchanged();
                customer.AcceptChanges();
            }
            catch (Exception ex)
            {
                LogError(ex);
                throw;
            }
        }
        private void SaveExecute()
        {
            try
            {
                if (this.Photo != null)
                {
                    this.Customer.CustomerPicture = new CustomerPicture()
                    {
                        Photo = this.Photo
                    }
                }
                ;
                else
                {
                    this.Customer.CustomerPicture = new CustomerPicture();
                }

                this.Customer.MarkAsAdded();

                MainModuleServiceClient client = new MainModuleServiceClient();
                client.AddCustomerCompleted += delegate
                {
                    _currentCustomer.AcceptChanges();
                    ((VMCustomerListView)((MainPage)App.Current.RootVisual).viewListCustomers.DataContext).GetCustomers();
                    ((MainPage)App.Current.RootVisual).GoBackAddCustomer.Begin();
                    Customer = null;
                };
                client.AddCustomerAsync(this._currentCustomer);
            }
            catch (FaultException <ServiceError> ex)
            {
                MessageBox.Show(ex.Detail.ErrorMessage);
            }
        }
        public async Task <IHttpActionResult> PostCustomer(Customer customer)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            customer.TrackingState = TrackingState.Added;
            _dbContext.ApplyChanges(customer);


            try
            {
                await _dbContext.SaveChangesAsync();
            }
            catch (DbUpdateException)
            {
                if (_dbContext.Customers.Any(c => c.CustomerId == customer.CustomerId))
                {
                    return(Conflict());
                }
                throw;
            }

            await _dbContext.LoadRelatedEntitiesAsync(customer);

            customer.AcceptChanges();
            return(CreatedAtRoute("DefaultApi", new { id = customer.CustomerId }, customer));
        }
        private void SaveExecute(string isValidData)
        {
            try
            {
                if (this.Photo == null)
                {
                    this.Customer.CustomerPicture = new CustomerPicture();
                }

                this.Customer.MarkAsModified();

                MainModuleServiceClient client = new MainModuleServiceClient();
                client.ChangeCustomerCompleted += delegate(object sender, AsyncCompletedEventArgs e)
                {
                    if (e.Error == null)
                    {
                        Customer.AcceptChanges();
                        ((VMCustomer)((MainPage)App.Current.RootVisual).viewCustomer.DataContext).Customer = Customer;
                        ((VMCustomerListView)((MainPage)App.Current.RootVisual).viewListCustomers.DataContext).GetCustomers();
                    }
                    ((MainPage)App.Current.RootVisual).GoBackEditCustomer.Begin();
                };
                client.ChangeCustomerAsync(this.Customer);
            }
            catch (FaultException <ServiceError> ex)
            {
                MessageBox.Show(ex.Detail.ErrorMessage);
            }
        }
        // PUT api/Customer
        public HttpResponseMessage PutCustomer(Customer customer)
        {
            if (!ModelState.IsValid)
            {
                return(Request.CreateErrorResponse(HttpStatusCode.BadRequest, ModelState));
            }

            _dbContext.ApplyChanges(customer);

            try
            {
                _dbContext.SaveChanges();
            }
            catch (DbUpdateConcurrencyException ex)
            {
                if (!_dbContext.Customers.Any(c => c.CustomerId == customer.CustomerId))
                {
                    return(Request.CreateErrorResponse(HttpStatusCode.Conflict, ex));
                }
                throw;
            }

            _dbContext.LoadRelatedEntities(customer);
            customer.AcceptChanges();

            HttpResponseMessage response = Request.CreateResponse(HttpStatusCode.OK, customer);

            return(response);
        }
        // POST api/Customer
        public HttpResponseMessage PostCustomer(Customer customer)
        {
            if (!ModelState.IsValid)
            {
                return(Request.CreateErrorResponse(HttpStatusCode.BadRequest, ModelState));
            }

            customer.TrackingState = TrackingState.Added;
            _dbContext.ApplyChanges(customer);

            try
            {
                _dbContext.SaveChanges();
            }
            catch (DbUpdateException ex)
            {
                if (_dbContext.Customers.Any(c => c.CustomerId == customer.CustomerId))
                {
                    return(Request.CreateErrorResponse(HttpStatusCode.Conflict, ex));
                }
                throw;
            }

            _dbContext.LoadRelatedEntities(customer);
            customer.AcceptChanges();

            HttpResponseMessage response = Request.CreateResponse(HttpStatusCode.Created, customer);

            response.Headers.Location = new Uri(Url.Link("DefaultApi", new { id = customer.CustomerId }));
            return(response);
        }
        public async Task <Customer> UpdateCustomer(Customer customer)
        {
            _dbContext.ApplyChanges(customer);

            try
            {
                await _dbContext.SaveChangesAsync();
            }
            catch (DbUpdateConcurrencyException updateEx)
            {
                throw new FaultException(updateEx.Message);
            }

            await _dbContext.LoadRelatedEntitiesAsync(customer);

            customer.AcceptChanges();
            return(customer);
        }
        public async Task <Customer> CreateCustomer(Customer customer)
        {
            customer.TrackingState = TrackingState.Added;
            _dbContext.ApplyChanges(customer);

            try
            {
                await _dbContext.SaveChangesAsync();
            }
            catch (DbUpdateException updateEx)
            {
                throw new FaultException(updateEx.Message);
            }

            await _dbContext.LoadRelatedEntitiesAsync(customer);

            customer.AcceptChanges();
            return(customer);
        }
 private void ExecuteSave(object obj)
 {
     _dataService.SaveCustomer(Customer).Subscribe(
         customer =>
     {
         if (_isNew)
         {
             Customer            = Customer;
             Customer.CustomerID = customer.CustomerID;
             Customer.AcceptChanges();
             OverwriteCig(Customer);
             InternalCommands.CustomerAddCompleted.Execute(Customer);
         }
         else
         {
             Customer = Customer;
             Customer.AcceptChanges();
             OverwriteCig(Customer);
             InternalCommands.CustomerEditCompleted.Execute(Customer);
         }
     });
 }
示例#13
0
        private void CustomerDeleteStart(Customer obj)
        {
            var confirmBox = MessageBox.Show(TextResources.ConfirmDeleteCustomerLabel,
                                             TextResources.ConfirmDeleteBoxTitle,
                                             MessageBoxButton.OKCancel);

            if (confirmBox == MessageBoxResult.OK)
            {
                obj.MarkAsDeleted();
                _dataService.DeleteCustomer(obj).Subscribe(
                    success =>
                {
                    if (success)
                    {
                        obj.AcceptChanges();
                        InternalCommands.CustomerDeleteCompleted.Execute(obj.CustomerID);
                    }
                    else
                    {
                        obj.CancelChanges();
                    }
                });
            }
        }
示例#14
0
        private static void OneToOneRelation(HttpClient client)
        {
            Console.WriteLine("\nPress Enter to create a new customer");
            Console.ReadLine();

            // Create a new customer
            var customer = new Customer
            {
                CustomerId  = "ABCDE",
                CompanyName = "Acme Company",
                ContactName = "John Doe",
                City        = "Dallas",
                Country     = "USA"
            };

            // Add to change tracker to mark as Added
            var customerChangeTracker = new ChangeTrackingCollection <Customer>(true)
            {
                customer
            };

            // Insert customer and merge
            Customer updatedCustomer = CreateEntity(client, customer);

            customerChangeTracker.MergeChanges(updatedCustomer);
            PrintCustomer(customer);

            Console.WriteLine("\nPress Enter to add a new setting");
            Console.ReadLine();

            // Add a new customer setting
            // NOTE: To add a 1-1 property, you must manually mark it as Added.
            customer.CustomerSetting = new CustomerSetting
            {
                CustomerId    = customer.CustomerId,
                Setting       = " Test Setting",
                TrackingState = TrackingState.Added // Mark as added
            };

            // Update customer, then accept changes
            updatedCustomer = UpdateEntity(client, customer);
            Console.WriteLine("\tCustomer setting added: {0}",
                              updatedCustomer.CustomerSetting != null);
            customer.AcceptChanges();
            PrintCustomer(customer);

            // Add new customer setting
            Console.WriteLine("\nPress Enter to modify the setting");
            Console.ReadLine();

            // Modify customer setting
            var newSetting = customer.CustomerSetting.Setting += " - Changed";

            // Update customer, then accept changes
            updatedCustomer = UpdateEntity(client, customer);
            Console.WriteLine("\tCustomer setting modified: {0}",
                              updatedCustomer.CustomerSetting.Setting == newSetting);
            customer.AcceptChanges();
            PrintCustomer(customer);

            // Remove existing customer setting
            Console.WriteLine("\nPress Enter to remove the existing setting");
            Console.ReadLine();

            // Delete existing customer setting
            // NOTE: To remove a 1-1 property, you must manually mark it as Deleted.
            customer.CustomerSetting.TrackingState = TrackingState.Deleted;

            // Update customer, then set 1-1 property to null
            updatedCustomer = UpdateEntity(client, customer);
            Console.WriteLine("\tCustomer setting removed: {0}",
                              updatedCustomer.CustomerSetting == null);
            customer.CustomerSetting = null;
            PrintCustomer(customer);

            // Delete the customer
            Console.WriteLine("\nPress Enter to delete the customer");
            Console.ReadLine();
            DeleteEntity <Customer, string>(client, customer.CustomerId);

            // Verify order was deleted
            var deleted = VerifyEntityDeleted <Customer, string>(client, customer.CustomerId);

            Console.WriteLine(deleted ?
                              "Customer was successfully deleted" :
                              "Customer was NOT deleted");
        }
示例#15
0
        private static void ManyToOneRelation(HttpClient client)
        {
            Console.WriteLine("\nPress Enter to create a new order for an existing customer");
            Console.ReadLine();

            // Create a new order for an existing customer
            var order = new Order {
                CustomerId = "ALFKI", OrderDate = DateTime.Today, ShippedDate = DateTime.Today.AddDays(1)
            };

            // Add to change tracker to mark as Added
            var orderChangeTracker = new ChangeTrackingCollection <Order>(true)
            {
                order
            };

            // Insert order and merge
            Order updatedOrder = CreateEntity(client, order);

            orderChangeTracker.MergeChanges(updatedOrder);
            PrintOrder(order);

            Console.WriteLine("\nPress Enter to add a new customer to the order");
            Console.ReadLine();

            // Create a new customer
            // NOTE: Marking customer as Added will create a NEW customer
            const string customerId = "WXYZ";
            var          customer   = new Customer
            {
                CustomerId    = customerId,
                CompanyName   = "Widget Company",
                ContactName   = "Jane Doe",
                City          = "New York",
                Country       = "USA",
                TrackingState = TrackingState.Added // Mark as added
            };

            order.Customer   = customer;   // new customer will be created
            order.CustomerId = customerId; // cust will be assigned to order

            // Update order, then accept changes
            updatedOrder = UpdateEntity(client, order);
            Console.WriteLine("\tOrder's customer added: {0}", updatedOrder.Customer != null);
            order.AcceptChanges();
            PrintOrder(order);
            PrintCustomer(order.Customer);

            Console.WriteLine("\nPress Enter to modify order's customer");
            Console.ReadLine();

            // Modify order customer
            var newCompanyName = order.Customer.CompanyName += " - Changed";

            // Update order, then accept changes
            UpdateEntity(client, order);
            var updatedCustomer = GetEntity <Customer, string>(client, customerId);

            Console.WriteLine("\tOrder customer's name modified: {0}",
                              updatedCustomer.CompanyName == newCompanyName);
            customer.AcceptChanges();
            PrintCustomer(customer);

            // Delete the order and customer
            Console.WriteLine("\nPress Enter to delete the order and customer");
            Console.ReadLine();

            // Delete order and verify
            DeleteEntity <Order, int>(client, order.OrderId);
            var orderDeleted = VerifyEntityDeleted <Order, int>(client, order.OrderId);

            Console.WriteLine(orderDeleted ?
                              "Order was successfully deleted" :
                              "Order was NOT deleted");

            // Delete order and verify
            DeleteEntity <Customer, string>(client, customer.CustomerId);
            var customerDeleted = VerifyEntityDeleted <Customer, string>(client, customer.CustomerId);

            Console.WriteLine(customerDeleted ?
                              "Customer was successfully deleted" :
                              "Customer was NOT deleted");
        }