public async Task <bool> UploadProgramsAsync(List <SocialProgramModel> lstSocialPrograms) { //Set Id for each batch Guid guid = Guid.NewGuid(); foreach (var item in lstSocialPrograms) { item.batch_id = guid.ToString(); } //STEP 1 Insert file var result = await _receiveData.BulkSocialProgramsAsync(lstSocialPrograms); //STEP 2 Consult Elegibles if (result != 0) { foreach (var item in lstSocialPrograms) { var response = ProcessEligibles(new ElegibleModel { id = item.id, first_name = item.first_name, last_name = item.last_name, program = item.program, value = item.value }); item.is_Elegible = response.isElegible == false ? "N" : "S"; await _receiveData.UpdateSocialProgramAsync(item.id, item); } } //STEP 3 Run Rules foreach (var item in lstSocialPrograms) { var validation = RunRules(item, lstSocialPrograms); if (validation != "") { item.rules_break = validation; await _receiveData.UpdateSocialProgramRulesAsync(item.id, item); } } //STEP 4 Verify against Tresury var respose = await TresuryValidation(); //STEP 5 Consolidate Payments if (respose) { } return(result == 0 ? false : true); }