private void decideUpdateOrCreate(Customer cust, out HttpResponseMessage response) { response = null; try { Customer temp; if (!repository.TryGet(cust.ID, out temp)) { cust = repository.Add(cust); response = Request.CreateResponse<Customer>(HttpStatusCode.Created, cust); response.Headers.Location = new Uri(Request.RequestUri, "/api/customers/" + cust.ID.ToString()); } else { repository.Update(cust); response = (new HttpResponseMessage(HttpStatusCode.OK)); } } catch (Exception ex) { string form = String.Format("ERROR OCCURRED IN {0} STACK TRACE IS {1} MESSAGE IS {2} ", "decideUpdateOrCreate", ex.StackTrace, ex.Message); logger.Error(form, ex); } }
public bool TryGet(long id, out Customer cust) { try { return Customers.TryGetValue(id, out cust); } catch (Exception ex) { string form = String.Format("ERROR OCCURRED IN {0} STACK TRACE IS {1} MESSAGE IS {2} ", "decideUpdateOrCreate", ex.StackTrace, ex.Message); logger.Error(form, ex); cust = null; return false; } }
public Customer Add(Customer cust) { try { cust.ID = nextID++; Customers[cust.ID] = cust; } catch (Exception ex) { string form = String.Format("ERROR OCCURRED IN {0} STACK TRACE IS {1} MESSAGE IS {2} ", "decideUpdateOrCreate", ex.StackTrace, ex.Message); logger.Error(form, ex); } return cust; }
public HttpResponseMessage PostCustomer(Customer cust) { HttpResponseMessage response; decideUpdateOrCreate(cust, out response); return response; }
public bool Update(Customer cust) { bool update = Customers.ContainsKey(cust.ID); //threads can cause assgn error try { Customers[cust.ID] = cust; } catch (Exception ex) { string form = String.Format("ERROR OCCURRED IN {0} STACK TRACE IS {1} MESSAGE IS {2} ", "decideUpdateOrCreate", ex.StackTrace, ex.Message); logger.Error(form, ex); } return update; }