Ejemplo n.º 1
0
        /// <summary>
        /// Получение показаний приборов учета лицевого счета
        /// </summary>
        /// <param name="personalAccountId"></param>
        /// <param name="periodBegin"></param>
        /// <param name="periodEnd"></param>
        public override async Task <IEnumerable <PersonalAccountMeterReading> > GetPersonalAccountMeterReadings(
            long personalAccountId, DateTime?periodBegin = null, DateTime?periodEnd = null)
        {
            using (var sqlExecutor = new SqlQueryPerformer())
            {
                var sqlQuery =
                    $@"SELECT *
                        FROM {
                        Extensions.Extensions.GetTableName<PersonalAccountMeterReading>()
                        } 
                        WHERE ""PersonalAccountId"" = {personalAccountId}
{
                        //маленькая магия: если дата начала и дата окончания равны,
                        //то берем конкретный месяц, иначе - берем период
                        (periodBegin.HasValue && periodEnd.HasValue && periodBegin == periodEnd
                            ? $@" AND ""CalculationDate"" = '{periodBegin.Value.ToShortDateString()}'"
                            : "")

                        }

{
                        (periodBegin.HasValue && periodBegin != periodEnd
                            ? $@" AND ""CalculationDate"" >= '{periodBegin.Value.ToShortDateString()}'"
                            : "")
                        }
{
                        (periodEnd.HasValue && periodBegin != periodEnd
                            ? $@" AND ""CalculationDate"" <= '{periodEnd.Value.ToShortDateString()}'"
                            : "")
                        }

";
                return(await sqlExecutor.ExecuteSqlToEnumerableAsync <PersonalAccountMeterReading>(sqlQuery));
            }
        }
Ejemplo n.º 2
0
        /// <summary>
        /// Получение начислений лицевого счета
        /// </summary>
        /// <param name="personalAccountId"></param>
        /// <param name="calculationDate"></param>
        public async override Task <IEnumerable <PersonalAccountAccrual> > GetPersonalAccountAccruals(long personalAccountId,
                                                                                                      DateTime calculationDate)
        {
            using (var sqlExecutor = new SqlQueryPerformer())
            {
                var sqlQuery =
                    $@"SELECT *
                        FROM {Extensions.Extensions.GetTableName<PersonalAccountAccrual>()} 
                        WHERE ""PersonalAccountId"" = {personalAccountId}
                        AND ""CalculationDate"" = '{calculationDate.ToShortDateString()}'";

                return(await sqlExecutor.ExecuteSqlToEnumerableAsync <PersonalAccountAccrual>(sqlQuery));
            }
        }
Ejemplo n.º 3
0
        /// <summary>
        /// Получение социальных платежей лицевого счета
        /// </summary>
        /// <param name="personalAccountId"></param>
        /// <param name="periodBegin"></param>
        /// <param name="periodEnd"></param>
        public async override Task <IEnumerable <PersonalAccountSocialPayment> > GetPersonalAccountSocialPayments(long personalAccountId, DateTime?periodBegin = null, DateTime?periodEnd = null)
        {
            using (var sqlExecutor = new SqlQueryPerformer())
            {
                var sqlQuery =
                    $@"SELECT *
                        FROM {Extensions.Extensions.GetTableName<PersonalAccountSocialPayment>()} 
                        WHERE ""PersonalAccountId"" = {personalAccountId}
{
                        (periodBegin.HasValue
                            ? $@" AND ""CalculationDate"" >= '{periodBegin.Value.ToShortDateString()}'"
                            : "")
}
{
                        (periodEnd.HasValue
                            ? $@" AND ""CalculationDate"" <= '{periodEnd.Value.ToShortDateString()}'"
                            : "")
}
";
                return(await sqlExecutor.ExecuteSqlToEnumerableAsync <PersonalAccountSocialPayment>(sqlQuery));
            }
        }