示例#1
0
        List <TopListDto> IOffloadService.GetOffloads(QueryParamsForTopList filters)
        {
            try
            {
                var parsedFilters = new QueryOffloadsInput
                {
                    Count              = ParseCount(filters.count),
                    pageNo             = ParsePageNo(filters.pageNo, filters.count),
                    PreservationMethod = ParesPreservationMethod(filters.preservationMethod),
                    FishingGear        = ParseFishingGear(filters.fishingGear),
                    BoatLength         = parseBoatLength(filters.boatLength),
                    LandingTown        = ParseLandingTown(filters.landingTown),
                    LandingState       = ParseLandingState(filters.landingState),
                    Month              = ParseMonth(filters.month),
                    Year     = ParseYear(filters.year),
                    FishName = ParseFishName(filters.fishName),
                    fromDate = ParseFromDate(ParseMonth(filters.month), ParseYear(filters.year)),
                    toDate   = ParseToDate(ParseMonth(filters.month), ParseYear(filters.year)),
                };

                return(this._offloadRepo.GetFilteredResults(parsedFilters));
            }
            catch (Exception e)
            {
                Console.WriteLine(e);
                Console.WriteLine("could not parse input");
                return(null);
            }
        }
示例#2
0
        public List <TopListDto> GetFilteredResults(QueryOffloadsInput filters)
        {
            var result = getFilterResultAsync(filters);

            result.Wait();
            var entity = result.Result;

            var dto = new List <TopListDto>();

            for (int i = 0; i < entity.Count; i++)
            {
                dto.Add(new TopListDto()
                {
                    BoatName           = entity[i].boatName,
                    TotalWeight        = entity[i].totalWeight,
                    BoatRegistrationId = entity[i].registrationId,
                    Town              = entity[i].landingTown,
                    State             = entity[i].landingState,
                    LandingDate       = entity[i].landingDate,
                    BoatRadioSignalId = entity[i].boatRadioSignalId,
                    BoatNationality   = entity[i].boatNationalityId,
                    BoatFishingGear   = entity[i].fishingGear,
                    BoatLength        = entity[i].boatLength,
                    Avrage            = entity[i].avrage,
                });
            }
            return(dto);
        }
示例#3
0
        public List <TopListDto> GetFilteredResults(QueryOffloadsInput filters)
        {
            var filteredResults = new List <TopListDto>();
            var cmd             = _connection.CreateCommand();

            _connection.Open();

            string boatLength          = string.Empty;
            string fishingGear         = string.Empty;
            string fishName            = string.Empty;
            string landingState        = string.Empty;
            string preservationMethood = string.Empty;

            if (filters.BoatLength != null)
            {
                boatLength = string.Format("AND `Største lengde` BETWEEN {0} AND {1}", filters.BoatLength[0].ToString(), filters.BoatLength[1].ToString());
            }
            if (filters.FishingGear != null)
            {
                fishingGear = AddFilter(filters.FishingGear, "`Redskap - gruppe`");
            }
            if (filters.FishName != null)
            {
                fishName = AddFilter(filters.FishName, "`Art - hovedgruppe`");
            }
            if (filters.LandingState != null)
            {
                landingState = AddFilter(filters.LandingState, "`Landingsfylke`");
            }
            if (filters.PreservationMethod != null)
            {
                preservationMethood = AddFilter(filters.PreservationMethod, "Konserveringsmåte");
            }

            cmd.CommandText = string.Format(
                @"SELECT
                    `Fartøynavn`, 
                    `Redskap`, 
                    `Største lengde`, 
                    SUM(`Rundvekt`),
                    `Radiokallesignal (seddel)`,
                    `Registreringsmerke (seddel)`,
					`Redskap - gruppe`,
                    `Art - hovedgruppe`,
                    `Landingsfylke`,
                    `Landingsdato`
                    FROM GetFilteredResults
                    WHERE `Landingsdato` BETWEEN CAST('{0}' AS DATE) AND CAST('{1}' AS DATE)
                    {2}
                    {3}
                    {4}
                    {5}
                    {6}
                    GROUP BY `Registreringsmerke (seddel)`
                    ORDER BY SUM(`Rundvekt`) DESC
                    LIMIT {7}
                    OFFSET {8};",
                filters.fromDate,
                filters.toDate,
                boatLength,
                fishingGear,
                fishName,
                landingState,
                preservationMethood,
                filters.Count,
                filters.pageNo);
            var reader = cmd.ExecuteReader();

            using (reader)
            {
                while (reader.Read())
                {
                    var topListDto = genTopListDto(
                        boatName: reader.GetString(0),
                        boatFishingGear: reader.GetString(1),
                        boatLength: reader.GetDouble(2),
                        totalWeight: reader.GetDouble(3),
                        boatRadioSignalId: reader.GetString(4),
                        boatRegistrationId: reader.GetString(5));
                    filteredResults.Add(topListDto);
                }
            }
            _connection.Dispose();
            return(filteredResults);
        }
示例#4
0
        private async Task <List <TopListEntity> > getFilterResultAsync(QueryOffloadsInput filters)
        {
            if (filters.Month != null)
            {
                for (int i = 0; i < filters.Month.Count; i++)
                {
                    Console.WriteLine(filters.Month[i]);
                }
            }
            if (filters.Year != null)
            {
                for (int i = 0; i < filters.Year.Count; i++)
                {
                    Console.WriteLine(filters.Year[i]);
                }
            }
            using var cmd      = _connection.CreateCommand();
            cmd.CommandTimeout = 90;
            _connection.Open();
            cmd.CommandText = @"SELECT 
	                            CAST(boat_name AS CHAR(20)) as 'Línubátar nafn' , 
                                CAST(boat_regestration_id AS CHAR(20)) as 'Línubátar',
                                SUM(CONVERT(CAST(fish_weight as CHAR(20)), UNSIGNED)) as 'Afl í kg',
                                CAST(fish_utilization AS CHAR(20)) as 'Fish Utilization',
                                CAST(document_sales_id AS CHAR (20)) as 'Document sales id', 
                                CAST(buyer_id AS CHAR (20)) as 'Buyer id', 
                                CAST(buyer_nationality AS CHAR (20)) as 'Buyer nationality', 
                                CAST(landing_town_id AS CHAR (20)) as 'Landing town id', 
                                CAST(landing_town AS CHAR (20)) as 'Landing town', 
                                CAST(landing_state_id AS CHAR (20)) as 'Landing state id', 
                                CAST(landing_state AS CHAR (20)) as 'Landing state name', 
                                CAST(boat_id AS CHAR (20)) as 'Boat id', 
                                CAST(boat_radio_signal_id AS CHAR (20)) as 'Boat radio signal id', 
                                CAST(boat_town_id AS CHAR (20)) as 'Boat town id', 
                                CAST(boat_state_id AS CHAR (20)) as 'Boat state id', 
                                CAST(boat_nationality_id AS CHAR (20)) as 'Boat nationality id', 
                                CONVERT(CAST(boat_length AS CHAR (20)), FLOAT) as 'Boat length', 
                                CAST(boat_weight_1969 AS CHAR (20)) as 'Boat weight 1969', 
                                CAST(boat_weight AS CHAR (20)) as 'Boat weight', 
                                CAST(boat_built_year AS CHAR (20)) as 'Boat built year', 
                                CAST(engine_power AS CHAR (20)) as 'Engine power', 
                                CAST(fishing_gear_id AS CHAR (20)) as 'Fishing gear id', 
                                CAST(fishing_gear AS CHAR (20)) as 'Fishing gear', 
                                CAST(Longitude AS CHAR (20)) as 'Longitute', 
                                CAST(Latitude AS CHAR (20)) as 'Latitude', 
                                STR_TO_DATE(CONCAT(SUBSTRING(CAST(landing_date AS CHAR (20)), 1, 2), ',' , CAST(landing_month AS CHAR (20)), ',',SUBSTRING(CAST(landing_date AS CHAR (20)), 7, 10)), '%d,%m,%Y') AS 'Landing date', 
                                CAST(landing_time AS CHAR (20)) as 'Landing time', 
                                CAST(landing_month AS CHAR (20)) as 'Landing month', 
                                CAST(fish_id AS CHAR (20)) as 'Fish id', 
                                CAST(fish_name AS CHAR (20)) AS 'Fish name',
                                CAST(fish_condition_id AS CHAR (20)) AS 'Fish condition id',
                                CAST(fish_condition AS CHAR (20)) AS 'Fish condition',
                                CAST(fish_preservation_method_id AS CHAR (20)) AS 'Fish preservation method id',
                                CAST(fish_preservation_method AS CHAR (20)) AS 'Fish preservation method',
                                CAST(packaging_id AS CHAR (20)) AS 'Packaging id',
                                CAST(packaging AS CHAR (20)) AS 'Packaging',
                                CAST(fish_quality_id AS CHAR (20)) AS 'Fish quality id',
                                CAST(fish_quality AS CHAR (20)) AS 'Fish quality',
                                CAST(fish_utilization AS CHAR (20)) AS 'Fish utilization',
                                CAST(landing_id AS CHAR (20)) AS 'Landing id',
                                COUNT(landing_id)/COUNT(DISTINCT landing_month) AS 'Average landings per month',
                                SUM(CONVERT(CAST(fish_weight as CHAR(20)), UNSIGNED))/COUNT(DISTINCT landing_month) as 'Meðal afl í kg á mánuði'

                                FROM englishVersion ";

            // Ef filtering á við fishinggear, s.s. ef fishing gear filtering er til staðar þá fer það hingað.
            bool firstFilter = true;

            if (filters.BoatLength != null)
            {
                firstFilter = false;
                string lenStr = string.Format(" WHERE (boat_length BETWEEN {0} AND {1})", filters.BoatLength[0], filters.BoatLength[1]);
                cmd.CommandText = cmd.CommandText + lenStr;
            }
            if (filters.Month != null)
            {
                cmd.CommandText = cmd.CommandText + AddFilter(filters.Month, firstFilter, "landing_month", false);
                firstFilter     = false;
            }
            if (filters.FishingGear != null)
            {
                cmd.CommandText = cmd.CommandText + AddFilter(filters.FishingGear, firstFilter, "fishing_gear");
                firstFilter     = false;
            }
            if (filters.FishName != null)
            {
                cmd.CommandText = cmd.CommandText + AddFilter(filters.FishName, firstFilter, "fish_name");
                firstFilter     = false;
            }
            if (filters.LandingState != null)
            {
                cmd.CommandText = cmd.CommandText + AddFilter(filters.LandingState, firstFilter, "landing_state");
                firstFilter     = false;
            }
            if (filters.Year != null)
            {
                bool is2016 = false;
                for (int i = 0; i < filters.Year.Count; i++)
                {
                    if (filters.Year[i] == 2016)
                    {
                        is2016 = true;
                    }
                }
                if (!is2016)
                {
                    _connection.Close();
                    return(new List <TopListEntity>());
                }
            }

            cmd.CommandText = cmd.CommandText + " GROUP BY CAST(boat_regestration_id AS CHAR(20)), CAST(boat_name AS CHAR(20)) ORDER BY SUM(CONVERT(CAST(fish_weight as CHAR(20)), UNSIGNED)) DESC LIMIT " + filters.Count + ";";

            // ....where ... fishing_gear = 'Autoline' OR fishing_gear = 'Andreline' OR fishing_gear = 'Juksa/pilk' OR fishing_gear = 'Flyteline'
            var res = await this.ReadAllAsync(await cmd.ExecuteReaderAsync());

            _connection.Close();
            return(res);
        }