A set of technologies in .NET for building web applications and web services. Miscellaneous topics that do not fit into specific categories.
These are my code samples
**Controller
** public async Task<IActionResult> Get([FromForm] BuyInsuranceDTO b)
{
//if (!User.HasClaim("Permission", Permissions.PurchasePolicy))
//{
// return StatusCode(403, new
// {
// success = false,
// message = "Sorry, you cant purchase policy at the moment."
// });
//}
var loggedInCustomer = Convert.ToInt16(User.FindFirst(ClaimTypes.NameIdentifier)?.Value);
var upload = Request.Form.Files.Where(x => x.Name == "Identification").FirstOrDefault();
var createPolicy = await service.CreateService(b, upload, loggedInCustomer, User.Identity.IsAuthenticated);
if (!createPolicy.Success)
{
return Json(new MyResponse { Success = false, Message = createPolicy.Message });
}
return Json(new MyResponse { Success = true, Message = createPolicy.Message });
}**
```DTO
** public class BuyInsuranceDTO
```powershell
{
// ================= BASIC =================
[Required]
public string FirstName { get; set; }
[Required]
public string LastName { get; set; }
public string MiddleName { get; set; }
[Required]
[Range(1, 2)]
public int Sex { get; set; }
[Required]
public DateTime DOB { get; set; }
[Required]
public string PhoneNumber { get; set; }
[Required]
public string Address { get; set; }
public string EmailAddress { get; set; }
public string Agent { get; set; }
// ================= NEXT OF KIN =================
[Required]
public string NOKFullName { get; set; }
public int NOKRelationship { get; set; }
[Required]
public string NOKPhoneNumber { get; set; }
[Required]
public string NOKAddress { get; set; }
// ================= POLICY =================
public Guid? PolicyID { get; set; }
[Required]
public List<CoverItemDTO> Covers { get; set; }
// ================= IDENTIFICATION =================
[Required]
public int IdentificationTypeId { get; set; }
[Required]
public string IdentificationNumber { get; set; }
public DateTime? ExpiryDate { get; set; }
public IFormFile Identification { get; set; }
// ================= BUSSINESS ADDRESS =================
public string StreetNumber { get; set; }
[Required]
public string StreetName { get; set; }
public string LandMark { get; set; }
[Required]
public int StateID { get; set; }
[Required]
public int LGAID { get; set; }
[Required]
public int AccountID { get; set; }
// ================= COVER UPLOADS =================
public List<CoverFileUploadDTO> CoverFiles { get; set; }
//============ Declared Items=================
public List<DeclarationItemsDTO> DeclarationItems { get; set; }
}
```**Java Script
**async function handleFinalSubmission() {
```javascript
if (!confirm('Are you sure you want to submit this policy application?')) {
return;
}
const formData = buildPolicyFormData();
const result = await sendPolicy(formData);
if (!result) {
return;
}
alert(result.message);
if (result.success) {
window.location.href =
'/policylisting/insuranceproduct';
}
```}
async function sendPolicy(formData) {
```typescript
if (isSubmitting) return;
isSubmitting = true;
showLoader();
try {
const res = await fetch(`/policyListing/get`, {
method: 'POST',
body: formData
});
const data = await res.json();
return data;
} catch (err) {
console.error(err);
alert("Failed to submit policy");
return null;
} finally {
isSubmitting = false;
hideLoader();
}
```}
function appendIfExists(formData, key, elementId) {
```sql
const el = document.getElementById(elementId);
if (el)
formData.append(key, el.value.trim());
```}
function buildPolicyFormData() {
```javascript
const formData = new FormData();
appendIfExists(formData, "FirstName", "firstName");
appendIfExists(formData, "MiddleName", "middleName");
appendIfExists(formData, "LastName", "lastName");
appendIfExists(formData, "PhoneNumber", "phone");
appendIfExists(formData, "Sex", "sex");
appendIfExists(formData, "DOB", "dob");
appendIfExists(formData, "Agent", "agent");
appendIfExists(formData, "Address", "address");
appendIfExists(formData, "EmailAddress", "email");
appendIfExists(formData, "NOKFullName", "nokName");
appendIfExists(formData, "NOKRelationship", "nokRelationship");
appendIfExists(formData, "NOKPhoneNumber", "nokPhone");
appendIfExists(formData, "NOKAddress", "nokAddress");
appendIfExists(formData, "IdentificationTypeId", "idType");
appendIfExists(formData, "IdentificationNumber", "idNumber");
appendIfExists(formData, "ExpiryDate", "expiryDate");
appendIfExists(formData, "StateID", "businessState");
appendIfExists(formData, "LGAID", "businessLga");
appendIfExists(formData, "StreetNumber", "businessStreetNumber");
appendIfExists(formData, "StreetName", "businessAddress");
appendIfExists(formData, "LandMark", "businessLandmark");
const idFile = document.getElementById('idUpload')?.files[0];
if (idFile) formData.append("Identification", idFile);
if (policyId) {
formData.append("PolicyID", policyId);
}
// Covers
if (isCustomPolicy && selectedCovers.length > 0) {
selectedCovers.forEach((cover, i) => {
formData.append(`Covers[${i}].CoverID`, cover.CoverID);
formData.append(`Covers[${i}].RiskCovered`, coverRisks[cover.CoverID] || 0);
});
} else if (selectedCoverIds.length > 0) {
selectedCoverIds.forEach((id, i) => {
formData.append(`Covers[${i}].CoverID`, id);
});
}
// Dynamic Cover Files
let fileIndex = 0;
let itemIndex = 0;
document.querySelectorAll('.cover-upload').forEach(input => {
const file = input.files[0];
if (file) {
formData.append(`CoverFiles[${fileIndex}].File`, file);
formData.append(`CoverFiles[${fileIndex}].CoverId`, input.dataset.coverid);
formData.append(`CoverFiles[${fileIndex}].Label`, input.dataset.label);
formData.append(`CoverFiles[${fileIndex}].coverUploadRequirementID`, input.name);
fileIndex++;
}
});
// Declaration Items
document.querySelectorAll("#tblDeclarationItems tbody tr").forEach(row => {
const itemName = row.querySelector(".item-name")?.value.trim();
const amount = row.querySelector(".item-amount")?.value;
// Ignore empty rows
if (!itemName || !amount)
return;
formData.append(`DeclarationItems[${itemIndex}].ItemName`, itemName);
formData.append(`DeclarationItems[${itemIndex}].Amount`, amount);
itemIndex++;
});
return formData;
```}