// public HttpResponseMessage<Customer> DeleteCustomer(int id) // Changed for Web Api RC // Delete = DELETE public HttpResponseMessage DeleteCustomer(int id) { using (var context = new ChinookContext()) { var request = context.Customers.Single(c => c.CustomerId == id && c.Deleted == false); if (request != null) { request.Deleted = true; context.SaveChanges(); return Request.CreateResponse(HttpStatusCode.Accepted, request); } return Request.CreateResponse(HttpStatusCode.NotFound); } }
// public HttpResponseMessage<Customer> PostCustomer(Customer customer) // Changed for Web Api RC // Create = Post public HttpResponseMessage PostCustomer(Customer customer) { using (var context = new ChinookContext()) { Customer request = null; if (customer.CustomerId != 0) { request = context.Customers.Single(c => c.CustomerId == customer.CustomerId); } if (request == null) { context.Customers.Add(customer); context.SaveChanges(); var response = Request.CreateResponse(HttpStatusCode.Created, customer); response.Headers.Location = new Uri(Request.RequestUri, string.Format("Customer/{0}", customer.CustomerId)); return response; } return this.PutCustomer(customer); } }
// public HttpResponseMessage<Customer> PutCustomer(Customer customer) // Changed for Web Api RC // Update = Put public HttpResponseMessage PutCustomer(Customer customer) { using (var context = new ChinookContext()) { //Customer request = null; //if (customer.CustomerId != 0) //{ // request = context.Customers.Single(c => c.CustomerId == customer.CustomerId); //} //if (request == null) //{ // return this.PostCustomer(customer); //} var original = context.Customers.Find(customer.CustomerId); if (original != null) { context.Entry(original).CurrentValues.SetValues(customer); context.SaveChanges(); } //// todo this has to have an easier way. Customer.Attach throws an error //request.FirstName = customer.FirstName; //request.LastName = customer.LastName; //request.Address = customer.Address; //request.City = customer.City; //request.PostalCode = customer.PostalCode; //request.State = customer.State; //request.Country = customer.Country; //request.Fax = customer.Fax; //request.Email = customer.Email; //request.Company = customer.Company; //context.SaveChanges(); var response = Request.CreateResponse(HttpStatusCode.Accepted, customer); response.Headers.Location = new Uri(Request.RequestUri, string.Format("Customer/{0}", customer.CustomerId)); return response; } }