private void detach_AppliedFeatureHistories(AppliedFeatureHistory entity) { this.SendPropertyChanging(); entity.AccountTypeFeature = null; }
partial void DeleteAppliedFeatureHistory(AppliedFeatureHistory instance);
partial void InsertAppliedFeatureHistory(AppliedFeatureHistory instance);
partial void UpdateAppliedFeatureHistory(AppliedFeatureHistory instance);
static void AppliedAccountTypeFeaturesEndOfDay() { List<FailMessages> failMessages = new List<FailMessages>(); using (FinanceManagerDataContext db = new FinanceManagerDataContext()) { //AccountType accType = db.AccountTypes.FirstOrDefault(a => a.AccountTypeId == Convert.ToInt32(DropDownList1.SelectedValue)); foreach (AccountType accType in db.AccountTypes) { foreach (AccountTypeFeature item in accType.AccountTypeFeatures) { AppliedFeatureHistory _appHistory = item.AppliedFeatureHistories.LastOrDefault(); if (_appHistory != null) { if (item.CalculationFrequencyID.Value == 1) //monthly { //AppliedFeatureHistory _appHistory = item.AppliedFeatureHistories.LastOrDefault(); if (_appHistory.AppliedDate.Value.AddMonths(1) < DateTime.Today) { failMessages.Add(new FailMessages() { Message = "Monthly feature was last applied on " + item.AppliedFeatureHistories.LastOrDefault().AppliedDate.Value + " which is less than a month. This feature was skipped." }); continue; } } else if (item.CalculationFrequencyID.Value == 2) //annually { if (_appHistory.AppliedDate.Value.AddYears(1) < DateTime.Today) { failMessages.Add(new FailMessages() { Message = "Annual feature was last applied on " + item.AppliedFeatureHistories.LastOrDefault().AppliedDate.Value + " which is less than a year. This feature was skipped." }); continue; } } else if (item.CalculationFrequencyID.Value == 3) //custom { if (_appHistory.AppliedDate.Value.AddDays(item.CustomCalculationFreqNumberOfDays.Value) < DateTime.Today) { failMessages.Add(new FailMessages() { Message = "Custom feature was last applied on " + item.AppliedFeatureHistories.LastOrDefault().AppliedDate.Value + " which is less than " + item.CustomCalculationFreqNumberOfDays.Value + " day(s). This feature was skipped." }); continue; } } } switch (item.CalculateOn) { case 1: foreach (Member member in accType.Members.Where(m => m.IsDeleted == false)) { int investmentTypeID = member.Investments.FirstOrDefault(i => i.InvestmentTypeId == db.AccountTypes.FirstOrDefault(a => a.AccountTypeId == member.AccountTypeID.Value).DefaultInvestmentTypeID.Value).InvestmentID; decimal valueToapply; decimal balance; balance = Utils.GetMemberBalance(member.MemberId, DateTime.Today.Date); if (item.IsPercentage.Value) { valueToapply = (item.ValueToApply.Value / 100) * balance; } else { valueToapply = item.ValueToApply.Value; } AppliedAccountFeature aFeature = new AppliedAccountFeature(); aFeature.AccountNumber = member.AccountNumber; aFeature.AccountTypeFeatureID = item.AccountFeatureID; aFeature.AppliedValue = item.IsDeduction.Value ? valueToapply * -1 : valueToapply; aFeature.CreatedBy = HttpContext.Current.User.Identity.Name; aFeature.CreatedDate = DateTime.Now; aFeature.InvestmentID = investmentTypeID; aFeature.Narration = "Account type feature manually applied."; db.AppliedAccountFeatures.InsertOnSubmit(aFeature); if (item.IsDeduction.Value) //insert into appliedCharges Table { AppliedInterest aInterest = new AppliedInterest(); aInterest.CreatedBy = HttpContext.Current.User.Identity.Name; aInterest.CreatedDate = DateTime.Now; aInterest.InterestAmount = valueToapply; aInterest.InvestmentID = aFeature.InvestmentID; aInterest.Rate = item.ValueToApply; db.AppliedInterests.InsertOnSubmit(aInterest); } else //insert into Applied interest table { AppliedDeduction aDeduction = new AppliedDeduction(); aDeduction.CreatedBy = HttpContext.Current.User.Identity.Name; aDeduction.CreatedDate = DateTime.Now; aDeduction.DeductionAmount = valueToapply; aDeduction.InvestmentID = aFeature.InvestmentID; aDeduction.Rate = item.ValueToApply; db.AppliedDeductions.InsertOnSubmit(aDeduction); } } AppliedFeatureHistory appliedFeatureHistory = new AppliedFeatureHistory(); appliedFeatureHistory.AccountTypeFeatureID = item.AccountFeatureID; appliedFeatureHistory.ActionInitiatedBy = "Manually run"; appliedFeatureHistory.AppliedBy = HttpContext.Current.User.Identity.Name; appliedFeatureHistory.AppliedDate = DateTime.Now; db.AppliedFeatureHistories.InsertOnSubmit(appliedFeatureHistory); db.SubmitChanges(); break; case 4: foreach (Member member in accType.Members.Where(m => m.IsDeleted == false)) { int investmentTypeID = member.Investments.FirstOrDefault(i => i.InvestmentTypeId == db.AccountTypes.FirstOrDefault(a => a.AccountTypeId == member.AccountTypeID.Value).DefaultInvestmentTypeID.Value).InvestmentID; decimal valueToapply; decimal totalWithdrawal; totalWithdrawal = Utils.GetMemberTotalWithdrawals(member.MemberId, DateTime.Today.Date); if (item.IsPercentage.Value) { valueToapply = (item.ValueToApply.Value / 100) * totalWithdrawal; } else { valueToapply = item.ValueToApply.Value; } AppliedAccountFeature aFeature = new AppliedAccountFeature(); aFeature.AccountNumber = member.AccountNumber; aFeature.AccountTypeFeatureID = item.AccountFeatureID; aFeature.AppliedValue = item.IsDeduction.Value ? valueToapply * -1 : valueToapply; aFeature.CreatedBy = HttpContext.Current.User.Identity.Name; aFeature.CreatedDate = DateTime.Now; aFeature.InvestmentID = investmentTypeID; aFeature.Narration = "Account type feature manually applied."; db.AppliedAccountFeatures.InsertOnSubmit(aFeature); if (item.IsDeduction.Value) //insert into appliedCharges Table { AppliedInterest aInterest = new AppliedInterest(); aInterest.CreatedBy = HttpContext.Current.User.Identity.Name; aInterest.CreatedDate = DateTime.Now; aInterest.InterestAmount = valueToapply; aInterest.InvestmentID = aFeature.InvestmentID; aInterest.Rate = item.ValueToApply; db.AppliedInterests.InsertOnSubmit(aInterest); } else //insert into Applied interest table { AppliedDeduction aDeduction = new AppliedDeduction(); aDeduction.CreatedBy = HttpContext.Current.User.Identity.Name; aDeduction.CreatedDate = DateTime.Now; aDeduction.DeductionAmount = valueToapply; aDeduction.InvestmentID = aFeature.InvestmentID; aDeduction.Rate = item.ValueToApply; db.AppliedDeductions.InsertOnSubmit(aDeduction); } } AppliedFeatureHistory appliedFeatureHistory1 = new AppliedFeatureHistory(); appliedFeatureHistory1.AccountTypeFeatureID = item.AccountFeatureID; appliedFeatureHistory1.ActionInitiatedBy = "Manually run"; appliedFeatureHistory1.AppliedBy = HttpContext.Current.User.Identity.Name; appliedFeatureHistory1.AppliedDate = DateTime.Now; db.AppliedFeatureHistories.InsertOnSubmit(appliedFeatureHistory1); db.SubmitChanges(); break; } } } } }