public JsonResult Create(string model) { if (!AuthorizationProvider.IsStatementAdmin()) { return(Forbidden()); } var accountModel = JsonConvert.DeserializeObject <PropertyAccountViewModel>(model); try { var dataProvider = new PropertyAccountProvider(_dbContext); var entity = new PropertyAccount(); dataProvider.MapData(accountModel, ref entity); dataProvider.Create(entity); dataProvider.Commit(); // need to commit to get the newly inserted PropertyAccountId accountModel.PropertyAccountId = entity.PropertyAccountId; // set the created Id to return to kendo grid foreach (var m in accountModel.SelectedPayoutMethods) { _dbContext.PropertyAccountPayoutMethods.Add(new PropertyAccountPayoutMethod { PayoutMethodId = Int32.Parse(m.Value), PropertyAccountId = entity.PropertyAccountId }); } dataProvider.Commit(); return(Json(accountModel, JsonRequestBehavior.AllowGet)); } catch (Exception ex) { var innerErrorMessage = ex.InnerException != null ? ex.InnerException.Message : string.Empty; string message = string.Format("Creating Property Account fails. {1} - {2}", ex.Message, innerErrorMessage); return(InternalError(message, "fail", ex)); } }
public JsonResult Update(string model) // parameter must be the same json object defined in parameterMap in kendo's datab source { if (!AuthorizationProvider.IsStatementAdmin()) { return(Forbidden()); } var accountModel = JsonConvert.DeserializeObject <PropertyAccountViewModel>(model); try { var dataProvider = new PropertyAccountProvider(_dbContext); var entity = dataProvider.Retrieve(accountModel.PropertyAccountId); dataProvider.MapData(accountModel, ref entity); dataProvider.Update(entity.PropertyAccountId, entity); // update properties if changed if (dataProvider.IsPayoutMethodLinkChanged(accountModel)) { // ad-hoc property codes PropertyPayoutMethods replacement var oldPayoutMethods = _dbContext.PropertyAccountPayoutMethods.Where(x => x.PropertyAccountId == entity.PropertyAccountId).ToList(); _dbContext.PropertyAccountPayoutMethods.RemoveRange(oldPayoutMethods); foreach (var m in accountModel.SelectedPayoutMethods) { _dbContext.PropertyAccountPayoutMethods.Add(new PropertyAccountPayoutMethod { PropertyAccountId = accountModel.PropertyAccountId, PayoutMethodId = Int32.Parse(m.Value), }); } } dataProvider.Commit(); return(Json(accountModel, JsonRequestBehavior.AllowGet)); } catch (Exception ex) { var innerErrorMessage = ex.InnerException != null ? ex.InnerException.Message : string.Empty; string message = string.Format("Saving Property Account {0:d} fails. {1} - {2}", accountModel.PropertyAccountId, ex.Message, innerErrorMessage); return(InternalError(message, "fail", ex)); } }
public JsonResult Delete(string model) { if (!AuthorizationProvider.IsStatementAdmin()) { return(Forbidden()); } var accountModel = JsonConvert.DeserializeObject <PropertyAccountViewModel>(model); try { var dataProvider = new PropertyAccountProvider(_dbContext); dataProvider.Delete(accountModel.PropertyAccountId); dataProvider.Commit(); return(Json("success", JsonRequestBehavior.AllowGet)); } catch (Exception ex) { return(InternalError(string.Format("Delete Property Account {0:d} fails.", accountModel.PropertyAccountId), "fail", ex)); } }