public static UnitChargeResponse ToModel(this UnitChargeDTO unitCharge)
        {
            var model = new UnitChargeResponse
            {
                ChargeId    = unitCharge.ChargeId,
                From        = unitCharge.From,
                To          = unitCharge.To,
                ChargeItems = unitCharge.ChargeItems.ToModel()
            };

            return(model);
        }
        public async Task <IEnumerable <UnitChargeDTO> > GetRentedUnitChargesAsync(int unitId, int personId)
        {
            var result      = new List <UnitChargeDTO>();
            var chargeItems = new List <UnitChargeItemDTO>();

            using (var connection = new SqlConnection(_connectionString))
            {
                using (var cmd = new SqlCommand())
                {
                    cmd.CommandType = System.Data.CommandType.StoredProcedure;
                    cmd.CommandText = "[dbo].[SpGetRentedUnitsChargeItems]";
                    cmd.Parameters.AddWithValue("@unitId", unitId);
                    cmd.Parameters.AddWithValue("@personId", personId);
                    cmd.Connection = connection;
                    cmd.Connection.Open();
                    using (var dataReader = await cmd.ExecuteReaderAsync())
                    {
                        while (await dataReader.ReadAsync())
                        {
                            if (result.Count == 0 || result[result.Count - 1].ChargeId != Convert.ToInt32(dataReader["ChargeID"]))
                            {
                                if (result.Count > 0)
                                {
                                    result[result.Count - 1].ChargeItems = chargeItems;
                                }
                                chargeItems = new List <UnitChargeItemDTO>();
                                var charge = new UnitChargeDTO
                                {
                                    ChargeId = Convert.ToInt32(dataReader["ChargeID"]),
                                    From     = Convert.ToDateTime(dataReader["ChargeFrom"]),
                                    To       = Convert.ToDateTime(dataReader["ChargeTo"])
                                };
                                result.Add(charge);
                            }
                            var chargeItem = new UnitChargeItemDTO();
                            chargeItem.ChargeItemId = Convert.ToInt32(dataReader["ChargeItemID"]);
                            chargeItem.ExpenseName  = Convert.ToString(dataReader["Name"]);
                            chargeItem.From         = Convert.ToDateTime(dataReader["From"]);
                            chargeItem.To           = Convert.ToDateTime(dataReader["To"]);
                            chargeItem.Amount       = Convert.ToDecimal(dataReader["Amount"]);
                            chargeItems.Add(chargeItem);
                        }
                    }
                    if (result.Count > 0)
                    {
                        result[result.Count - 1].ChargeItems = chargeItems;
                    }
                }
            }
            return(result);
        }