private static void HandleOpenShop(GameSession session, PacketReader packet)
    {
        MeretMarketCategory category = (MeretMarketCategory)packet.ReadInt();

        MeretMarketCategoryMetadata metadata = MeretMarketCategoryMetadataStorage.GetMetadata((int)category);

        if (metadata is null)
        {
            return;
        }

        switch (metadata.Section)
        {
        case MeretMarketSection.PremiumMarket:
            HandleOpenPremiumMarket(session, category);
            break;

        case MeretMarketSection.RedMeretMarket:
            HandleOpenRedMeretMarket();
            break;

        case MeretMarketSection.UGCMarket:
            HandleOpenUGCMarket(session, packet, metadata);
            break;
        }
    }
    private static void HandleOpenUGCMarket(GameSession session, PacketReader packet, MeretMarketCategoryMetadata metadata)
    {
        GenderFlag gender = (GenderFlag)packet.ReadByte();
        JobFlag    job    = (JobFlag)packet.ReadInt();
        short      sortBy = packet.ReadByte();

        List <UGCMarketItem> items = GameServer.UGCMarketManager.FindItemsByCategory(metadata.ItemCategories, gender, job, sortBy);

        session.Send(MeretMarketPacket.LoadUGCShopCategory(items));
    }