public ActionResult AccountUpdate() { try { string json = GetRequestBody(); var jarr = JArray.Parse(json); var acctEdit = GetAccountEdit(); foreach (JObject jobj in jarr) { var field = jobj["field"].Value <string>(); var value = jobj["value"].Value <string>(); AccountEditUtility.SetProperty(acctEdit, field, value); } return(Json(new { update = true })); } catch (Exception ex) { Response.StatusCode = 500; return(Json(new { error = ex.Message })); } }
public ActionResult AccountManagerDelete() { try { var acctEdit = GetAccountEdit(); int clientOrgId = Convert.ToInt32(Request.Form["client-org-id"]); var managers = acctEdit.Managers.ToList(); var mgr = managers.FirstOrDefault(x => x.ClientOrgID == clientOrgId); if (mgr != null) { managers.Remove(mgr); acctEdit.Managers = managers.OrderBy(x => x.LName).ThenBy(x => x.FName); var available = AccountEditUtility.GetAvailableManagers(acctEdit); return(Json(new { delete = true, managers = acctEdit.Managers, available })); } else { return(Json(new { delete = false })); } } catch (Exception ex) { Response.StatusCode = 500; return(Json(new { error = ex.Message })); } }
public ActionResult AccountAddressUpdate() { try { var acctEdit = GetAccountEdit(); var addressId = Convert.ToInt32(Request.Form["address-id"]); var addressType = Request.Form["address-type"]; var attention = Request.Form["attention"]; var addressLine1 = Request.Form["address-line1"]; var addressLine2 = Request.Form["address-line2"]; var city = Request.Form["city"]; var state = Request.Form["state"]; var zip = Request.Form["zip"]; var country = Request.Form["country"]; if (addressId == -1) { AccountEditUtility.AddAddress(acctEdit, addressType, attention, addressLine1, addressLine2, city, state, zip, country); } else { if (acctEdit.Addresses.ContainsKey(addressType)) { acctEdit.Addresses[addressType].Attention = attention; acctEdit.Addresses[addressType].AddressLine1 = addressLine1; acctEdit.Addresses[addressType].AddressLine2 = addressLine2; acctEdit.Addresses[addressType].City = city; acctEdit.Addresses[addressType].State = state; acctEdit.Addresses[addressType].Zip = zip; acctEdit.Addresses[addressType].Country = country; } else { // might as well add it AccountEditUtility.AddAddress(acctEdit, addressType, attention, addressLine1, addressLine2, city, state, zip, country); } } return(Json(new { addressId = acctEdit.Addresses[addressType].AddressID })); } catch (Exception ex) { Response.StatusCode = 500; return(Json(new { error = ex.Message })); } }
public ActionResult AccountManagerAdd() { try { var acctEdit = GetAccountEdit(); int clientOrgId = Convert.ToInt32(Request.Form["client-org-id"]); var managers = acctEdit.Managers.ToList(); var mgr = DataSession.Single <ClientOrgInfo>(clientOrgId); if (mgr != null) { managers.Add(new AccountManagerEdit() { ClientOrgID = mgr.ClientOrgID, LName = mgr.LName, FName = mgr.FName }); acctEdit.Managers = managers.OrderBy(x => x.LName).ThenBy(x => x.FName).ToList(); var available = AccountEditUtility.GetAvailableManagers(acctEdit); return(Json(new { add = true, managers = acctEdit.Managers, available })); } else { return(Json(new { add = false })); } } catch (Exception ex) { Response.StatusCode = 500; return(Json(new { error = ex.Message })); } }
public ActionResult Edit(int orgId, int accountId) { var currentOrg = DataSession.Single <Org>(orgId); if (currentOrg == null) { return(RedirectToAction("Index", new { orgId })); } var model = new AccountEditModel { AccountID = accountId, CurrentOrg = currentOrg }; var fundingSources = DataSession.Query <FundingSource>().OrderBy(x => x.FundingSourceName).ToList(); model.FundingSources = fundingSources; var technicalFields = DataSession.Query <TechnicalField>().OrderBy(x => x.TechnicalFieldName).ToList(); model.TechnicalFields = technicalFields; var specialTopics = DataSession.Query <SpecialTopic>().OrderBy(x => x.SpecialTopicName).ToList(); model.SpecialTopics = specialTopics; Account acct = null; if (accountId > 0) { acct = DataSession.Single <Account>(accountId); if (acct == null && accountId > 0) { return(RedirectToAction("Index", new { orgId })); } if (acct.Org.OrgID != orgId) { return(RedirectToAction("Index", new { orgId })); } model.AccountName = acct.Name; } AccountEdit acctEdit; IAccount a = acct.CreateModel <IAccount>(); IOrg o = currentOrg.CreateModel <IOrg>(); if (Session["AccountEdit"] == null) { InitAccountEdit(a, o); } else { acctEdit = (AccountEdit)Session["AccountEdit"]; if (acctEdit.OrgID != currentOrg.OrgID || acctEdit.AccountID != accountId) { InitAccountEdit(a, o); } } acctEdit = (AccountEdit)Session["AccountEdit"]; model.AvailableManagers = AccountEditUtility.GetAvailableManagers(acctEdit); model.IsChartFieldOrg = AccountChartFields.IsChartFieldOrg(o); return(View(model)); }
private void InitAccountEdit(IAccount acct, IOrg org) { AccountEdit acctEdit = new AccountEdit(); // null means adding a new account if (acct != null) { acctEdit.OrgID = acct.OrgID; acctEdit.AccountID = acct.AccountID; acctEdit.AccountName = acct.AccountName; acctEdit.AccountNumber = acct.AccountNumber; acctEdit.AccountTypeID = acct.AccountTypeID; acctEdit.FundingSourceID = acct.FundingSourceID; acctEdit.Managers = AccountEditUtility.GetManagerEdits(acct.AccountID); acctEdit.ShortCode = acct.ShortCode.Trim(); acctEdit.SpecialTopicID = acct.SpecialTopicID; acctEdit.TechnicalFieldID = acct.TechnicalFieldID; acctEdit.InvoiceNumber = acct.InvoiceNumber; acctEdit.InvoiceLine1 = acct.InvoiceLine1; acctEdit.InvoiceLine2 = acct.InvoiceLine2; acctEdit.PoEndDate = acct.PoEndDate; acctEdit.PoInitialFunds = acct.PoInitialFunds; acctEdit.PoRemainingFunds = acct.PoRemainingFunds; acctEdit.Addresses = new Dictionary <string, AddressEdit> { { "billing", AccountEditUtility.GetAddressEdit(acct.BillAddressID) }, { "shipping", AccountEditUtility.GetAddressEdit(acct.ShipAddressID) } }; if (AccountChartFields.IsChartFieldOrg(org)) { var cf = ServiceProvider.Current.Data.Account.GetChartFields(acct); acctEdit.ChartFields = new AccountChartFieldEdit() { Account = cf.Account, Fund = cf.Fund, Department = cf.Department, Program = cf.Program, Class = cf.Class, Project = cf.Project, ShortCode = cf.ShortCode }; } } else { acctEdit.OrgID = org.OrgID; acctEdit.Managers = new List <AccountManagerEdit>(); acctEdit.Addresses = new Dictionary <string, AddressEdit> { { "billing", AccountEditUtility.GetAddressEdit(org.DefBillAddressID) }, { "shipping", AccountEditUtility.GetAddressEdit(org.DefShipAddressID) } }; acctEdit.AccountTypeID = 1; if (AccountChartFields.IsChartFieldOrg(org)) { acctEdit.ChartFields = new AccountChartFieldEdit(); } } Session["AccountEdit"] = acctEdit; }
public ActionResult Update(int orgId) { // save all changes if (Session["AccountEdit"] != null) { var acctEdit = (AccountEdit)Session["AccountEdit"]; Account acct; bool insert = false; if (acctEdit.AccountID > 0) { acct = DataSession.Single <Account>(acctEdit.AccountID); } else { acct = new Account { Org = DataSession.Single <Org>(orgId) }; insert = true; } if (acct != null) { acct.Name = acctEdit.AccountName; acct.Number = AccountEditUtility.GetAccountNumber(acctEdit); acct.ShortCode = AccountEditUtility.GetShortCode(acctEdit); acct.FundingSourceID = acctEdit.FundingSourceID; acct.TechnicalFieldID = acctEdit.TechnicalFieldID; acct.SpecialTopicID = acctEdit.SpecialTopicID; acct.AccountType = DataSession.Single <AccountType>(acctEdit.AccountTypeID); acct.InvoiceNumber = acctEdit.InvoiceNumber; acct.InvoiceLine1 = acctEdit.InvoiceLine1; acct.InvoiceLine2 = acctEdit.InvoiceLine2; acct.PoEndDate = acctEdit.PoEndDate; acct.PoInitialFunds = acctEdit.PoInitialFunds; // handle addresses foreach (var kvp in acctEdit.Addresses) { if (kvp.Value != null) { Address addr; bool insertAddr = false; if (kvp.Value.AddressID == 0) { addr = new Address(); insertAddr = true; } else { addr = DataSession.Single <Address>(kvp.Value.AddressID); } addr.InternalAddress = kvp.Value.Attention; addr.StrAddress1 = kvp.Value.AddressLine1; addr.StrAddress2 = kvp.Value.AddressLine2; addr.City = kvp.Value.City; addr.State = kvp.Value.State; addr.Zip = kvp.Value.Zip; addr.Country = kvp.Value.Country; if (insertAddr) { DataSession.Insert(addr); } if (kvp.Key == "billing") { acct.BillAddressID = addr.AddressID; } if (kvp.Key == "shipping") { acct.ShipAddressID = addr.AddressID; } } else { if (kvp.Key == "billing") { if (acct.BillAddressID > 0) { DataSession.Delete(DataSession.Single <Address>(acct.BillAddressID)); } acct.BillAddressID = 0; } if (kvp.Key == "shipping") { if (acct.ShipAddressID > 0) { DataSession.Delete(DataSession.Single <Address>(acct.ShipAddressID)); } acct.ShipAddressID = 0; } } } if (insert) { DataSession.Insert(acct); Provider.Data.ActiveLog.Enable(acct); } // handle managers var currentManagers = AccountEditUtility.GetManagerEdits(acct.AccountID).ToList(); foreach (var mgr in acctEdit.Managers) { if (!currentManagers.Any(x => x.ClientOrgID == mgr.ClientOrgID)) { // adding a new manager // check for an existing ClientAccount to make a manager and reactivate if needed ClientAccount ca; ca = DataSession.Query <ClientAccount>().FirstOrDefault(x => x.ClientOrg.ClientOrgID == mgr.ClientOrgID && x.Account == acct); if (ca != null) { ca.Manager = true; if (!ca.Active) { Provider.Data.ActiveLog.Enable(ca); } } else { ca = new ClientAccount() { ClientOrg = DataSession.Single <ClientOrg>(mgr.ClientOrgID), Account = acct, Manager = true, IsDefault = false }; DataSession.Insert(ca); Provider.Data.ActiveLog.Enable(ca); } currentManagers.Add(new AccountManagerEdit() { ClientOrgID = ca.ClientOrg.ClientOrgID, FName = ca.ClientOrg.Client.FName, LName = ca.ClientOrg.Client.LName }); } } // now check for any deleted managers foreach (var mgr in currentManagers.ToArray()) { if (!acctEdit.Managers.Any(x => x.ClientOrgID == mgr.ClientOrgID)) { // a current manager was deleted ClientAccount ca = DataSession.Query <ClientAccount>() .FirstOrDefault(x => x.ClientOrg.ClientOrgID == mgr.ClientOrgID && x.Account == acct); if (ca != null) { RemoveManager(ca); currentManagers.Remove(mgr); } } } } Session.Remove("AccountEdit"); } return(RedirectToAction("Index", new { orgId })); }