public string GenerateBillBGWise(long BillGroupDetailId) { var result = "Success"; var billsToAdd = new List <Bill>(); var bgDetail = GetBillGroup(BillGroupDetailId); var monthYear = bgDetail.BillMonth.ToString("00") + bgDetail.BillYear.ToString(); var units = from unit in UnitSummary where unit.billgroupid == bgDetail.BillGroupId && unit.divisionid == bgDetail.DivisionId select unit; var exist = (from bill in Bills join ui in units on bill.UnitId equals ui.id where bill.MonthYear == monthYear select ui).Any(); if (exist) { return("Already Bill Generated for this Period."); } foreach (var unit in units.ToList()) { billsToAdd.Add(GenerateBillForUnit(bgDetail, unit, monthYear)); } Bills.AddRange(billsToAdd); SaveChanges(); var bgd = (from bg in BillGroupDetail where bg.Id == BillGroupDetailId select bg).FirstOrDefault(); bgd.Status = "Generated"; BillGroupDetail.Update(bgd); SaveChanges(); return(result); }