public HttpResponseMessage Patch([FromBody] JsonPatchDocument <CreateShellAccountModel> patch) { var json = File.ReadAllText(jsonFile); var jObject = JObject.Parse(json); JArray experiencesArrary = (JArray)jObject["Shells"]; var lead = experiencesArrary.FirstOrDefault(obj => obj["AlarmNetAccountDetails"]["CityCSSub"]["CityId"].Value <string>() == "89" && obj["AlarmNetAccountDetails"]["CityCSSub"]["CsId"].Value <string>() == "05" && obj["AlarmNetAccountDetails"]["CityCSSub"]["SubscriberId"].Value <string>() == "0212" ); string jsonObjShellAct = lead.ToString(); CreateShellAccountModel contact = JsonConvert.DeserializeObject <CreateShellAccountModel>(jsonObjShellAct); //var patched = CreateShellAccountModel.Copy(); patch.ApplyTo(contact);// ModelState); return(Request.CreateResponse(HttpStatusCode.OK, contact)); //var model = new //{ // original = contact, // patched = patched //}; //return Ok(); }
/// <summary> /// Creates shell account using Customer details along with Alarmnet and Total Connect information. /// </summary> /// <param name="ShellObj"></param> /// <returns></returns> public HttpResponseMessage Post([FromBody] CreateShellAccountModel ShellObj) { try { string AlarmReportingNumber = ShellObj.AlarmNetAccountDetails.CityCSSub.CityId + "-" + ShellObj.AlarmNetAccountDetails.CityCSSub.CsId + "-" + ShellObj.AlarmNetAccountDetails.CityCSSub.SubscriberId; if (!ModelState.IsValid) { string message = string.Join(" | ", ModelState.Values .SelectMany(v => v.Errors) .Select(e => e.ErrorMessage)); return(this.Request.CreateResponse(HttpStatusCode.BadRequest, message)); } else if (IsExistingLead(ShellObj.AlarmNetAccountDetails.CityCSSub.CityId, ShellObj.AlarmNetAccountDetails.CityCSSub.CsId, ShellObj.AlarmNetAccountDetails.CityCSSub.SubscriberId)) { string message = AlarmReportingNumber + " already present in the system. Please use different subscriberid. Unable to create shell account , please try again."; return(this.Request.CreateResponse(HttpStatusCode.Conflict, message)); } else { //Adding Data var existingjson = File.ReadAllText(jsonFile); var jObject1 = JObject.Parse(existingjson); JArray experiencesArrary = (JArray)jObject1["Shells"]; string newjson = JsonConvert.SerializeObject(ShellObj); var newCustomer = JObject.Parse(newjson); experiencesArrary.Add(newCustomer); jObject1["Shells"] = experiencesArrary; string newJsonResult = Newtonsoft.Json.JsonConvert.SerializeObject(jObject1, Newtonsoft.Json.Formatting.Indented); File.WriteAllText(jsonFile, newJsonResult); //End //Getting Data var json = File.ReadAllText(jsonFile); var jObject = JObject.Parse(json); //End var message = Request.CreateResponse(HttpStatusCode.Created, "Shell account successfully created for" + AlarmReportingNumber); message.Headers.Location = new Uri(Request.RequestUri + "/" + AlarmReportingNumber); return(message); } } catch (Exception ex) { return(Request.CreateResponse(HttpStatusCode.BadRequest, ex)); } }
/// <summary> /// Update shell account based on the Alarm Reporting Number /// </summary> /// <param name="ShellObj"></param> /// <param name="AlarmReportingNumber">AlarmReportingNumber shall be in city-cs-sub format</param> /// <returns></returns> public HttpResponseMessage Put([FromBody] CreateShellAccountModel ShellObj, string AlarmReportingNumber) { try { string[] CityCsSub = AlarmReportingNumber.Split('-'); if (!ModelState.IsValid) { string message = string.Join(" | ", ModelState.Values .SelectMany(v => v.Errors) .Select(e => e.ErrorMessage)); return(this.Request.CreateResponse(HttpStatusCode.BadRequest, message)); } else if (IsExistingLead(CityCsSub[0], CityCsSub[1], CityCsSub[2])) { //Delete First var json = File.ReadAllText(jsonFile); var jObject = JObject.Parse(json); JArray experiencesArrary = (JArray)jObject["Shells"]; var Leadstobedeleted = experiencesArrary.FirstOrDefault(obj => obj["AlarmNetAccountDetails"]["CityCSSub"]["CityId"].Value <string>() == CityCsSub[0] && obj["AlarmNetAccountDetails"]["CityCSSub"]["CsId"].Value <string>() == CityCsSub[1] && obj["AlarmNetAccountDetails"]["CityCSSub"]["SubscriberId"].Value <string>() == CityCsSub[2] ); experiencesArrary.Remove(Leadstobedeleted); string newjson = JsonConvert.SerializeObject(ShellObj); var updatedCustomer = JObject.Parse(newjson); experiencesArrary.Add(updatedCustomer); string output = Newtonsoft.Json.JsonConvert.SerializeObject(jObject, Newtonsoft.Json.Formatting.Indented); File.WriteAllText(jsonFile, output); string message = AlarmReportingNumber + " shell account updated successfully"; return(this.Request.CreateResponse(HttpStatusCode.Conflict, message)); } else { string message = AlarmReportingNumber + " doesn't exist in the system.Please use proper AlarmReportingNumber."; return(this.Request.CreateResponse(HttpStatusCode.NotFound, message)); } } catch (Exception ex) { return(this.Request.CreateResponse(HttpStatusCode.BadRequest, ex)); } }