/// <summary> /// سهمیه مرخصی یک دسته قانون برای یک سال مشخص را برمیگرداند /// </summary> /// <param name="ruleCategoryId">کلید اصلی دسته قانون</param> /// <param name="year">سال</param> /// <returns>پروکسی سهمیه مرخصی</returns> public LeaveBudgetProxy GetRuleBudget(decimal ruleCategoryId, int year) { try { DateTime fromDate, toDate; if (BLanguage.CurrentSystemLanguage == LanguagesName.Parsi) { fromDate = Utility.ToMildiDate(String.Format("{0}/01/01", year)); toDate = Utility.ToMildiDate(String.Format("{0}/12/{1}", year, Utility.GetEndOfPersianMonth(year, 12))); } else { fromDate = new DateTime(year, 1, 1); toDate = new DateTime(year, 12, Utility.GetEndOfMiladiMonth(year, 12)); } LeaveBudgetProxy proxy = new LeaveBudgetProxy(); IList <Budget> list = objectRep.GetByCriteria(new CriteriaStruct(Utility.GetPropertyName(() => new Budget().Date), fromDate, CriteriaOperation.GreaterEqThan), new CriteriaStruct(Utility.GetPropertyName(() => new Budget().Date), toDate, CriteriaOperation.LessEqThan), new CriteriaStruct(Utility.GetPropertyName(() => new Budget().RuleCategory), new RuleCategory() { ID = ruleCategoryId })); if (Utility.IsEmpty(list)) { proxy.BudgetType = BudgetType.Usual; } else if (list.Count == 1 && list.First().Type == BudgetType.Usual) { Budget bud = list.First(); proxy.ID = bud.ID; proxy.Description = bud.Description; proxy.BudgetType = bud.Type; proxy.TotoalDay = bud.Day.ToString(); proxy.TotoalTime = Utility.IntTimeToTime(bud.Minute, true); } else if (list.Count == 12) { Budget bud = list.First(); proxy.ID = bud.ID; proxy.Description = bud.Description; proxy.BudgetType = BudgetType.PerMonth; proxy.Day1 = list[0].Day.ToString(); proxy.Time1 = Utility.IntTimeToTime(list[0].Minute, true); proxy.Day2 = list[1].Day.ToString(); proxy.Time2 = Utility.IntTimeToTime(list[1].Minute, true); proxy.Day3 = list[2].Day.ToString(); proxy.Time3 = Utility.IntTimeToTime(list[2].Minute, true); proxy.Day4 = list[3].Day.ToString(); proxy.Time4 = Utility.IntTimeToTime(list[3].Minute, true); proxy.Day5 = list[4].Day.ToString(); proxy.Time5 = Utility.IntTimeToTime(list[4].Minute, true); proxy.Day6 = list[5].Day.ToString(); proxy.Time6 = Utility.IntTimeToTime(list[5].Minute, true); proxy.Day7 = list[6].Day.ToString(); proxy.Time7 = Utility.IntTimeToTime(list[6].Minute, true); proxy.Day8 = list[7].Day.ToString(); proxy.Time8 = Utility.IntTimeToTime(list[7].Minute, true); proxy.Day9 = list[8].Day.ToString(); proxy.Time9 = Utility.IntTimeToTime(list[8].Minute, true); proxy.Day10 = list[9].Day.ToString(); proxy.Time10 = Utility.IntTimeToTime(list[9].Minute, true); proxy.Day11 = list[10].Day.ToString(); proxy.Time11 = Utility.IntTimeToTime(list[10].Minute, true); proxy.Day12 = list[11].Day.ToString(); proxy.Time12 = Utility.IntTimeToTime(list[11].Minute, true); } else { throw new InvalidDatabaseStateException(UIFatalExceptionIdentifiers.LeaveBudgetRecordsCountInDatabaseIsNotValid, String.Format("تعداد رکورد های بودجه مرخصی در دیتابیس برای گروه قانون {0} و سال {1} نامعتبر است", ruleCategoryId, year), ExceptionSrc); } return(proxy); } catch (Exception ex) { LogException(ex, "BLeave", "GetRuleBudget"); throw ex; } }