Example #1
0
        /// <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;
            }
        }