public async Task <IActionResult> Get(string referenceType, string referenceKey) { var dbReferenceType = 0; if (SettingApi.ReferenceTypes.Group.Equals(referenceType, StringComparison.InvariantCultureIgnoreCase)) { dbReferenceType = 10; } else if (SettingApi.ReferenceTypes.Task.Equals(referenceType, StringComparison.InvariantCultureIgnoreCase)) { dbReferenceType = 20; } else { ModelState.AddModelError(referenceType, "Invalid Invoice Settings Reference Type."); return(new BadRequestObjectResult(ModelState)); } var invoiceSetting = await DbContext.InvoiceSettings.Where(s => s.PartitionId == CurrentPartitionId && s.ReferenceType == dbReferenceType && s.ReferenceKey == referenceKey) .Select(s => new InvoiceSettingApi { ReferenceType = referenceType, ReferenceKey = referenceKey, ToEmail = s.ToEmail, EmailSubject = s.EmailSubject, EmailBody = s.EmailBody, InvoiceTitle = s.InvoiceTitle, InvoiceCustomer = s.InvoiceCustomer, InvoicePaymentTerms = s.InvoicePaymentTerms, InvoiceReference = s.InvoiceReference, InvoiceText = s.InvoiceText, }).FirstOrDefaultAsync(); if (invoiceSetting == null) { invoiceSetting = new InvoiceSettingApi { ReferenceType = referenceType, ReferenceKey = referenceKey, }; } if (string.IsNullOrWhiteSpace(invoiceSetting.InvoiceCustomer) && SettingApi.ReferenceTypes.Group.Equals(referenceType, StringComparison.InvariantCultureIgnoreCase)) { invoiceSetting.InvoiceCustomer = referenceKey; } return(Json(invoiceSetting)); }
public async Task <IActionResult> Post([FromBody] InvoiceSettingApi item) { if (!ModelState.IsValidUpdated()) { return(new BadRequestObjectResult(ModelState)); } var dbReferenceType = 0; if (SettingApi.ReferenceTypes.Group.Equals(item.ReferenceType, StringComparison.InvariantCultureIgnoreCase)) { dbReferenceType = 10; } else if (SettingApi.ReferenceTypes.Task.Equals(item.ReferenceType, StringComparison.InvariantCultureIgnoreCase)) { dbReferenceType = 20; } else { ModelState.AddModelError("item.ReferenceType", "Invalid Invoice Settings Reference Type."); return(new BadRequestObjectResult(ModelState)); } var invoiceSetting = await DbContext.InvoiceSettings.Where(s => s.PartitionId == CurrentPartitionId && s.ReferenceType == dbReferenceType && s.ReferenceKey == item.ReferenceKey).FirstOrDefaultAsync(); if (invoiceSetting == null) { invoiceSetting = new InvoiceSetting { PartitionId = CurrentPartitionId, ReferenceType = dbReferenceType, ReferenceKey = item.ReferenceKey, }; DbContext.InvoiceSettings.Add(invoiceSetting); } await MapDeltaValuesAndCleanWhiteSpace(item, invoiceSetting, new string[] { "ReferenceType", "ReferenceKey" }, updateNulls : true); await DbContext.SaveChangesAsync(); return(Ok()); }