Files
meezi/src/Meezi.API/Services/CafeDiscoverProfileMapping.cs
T
soroush.asadi ef15fd6247 feat(api): .NET 10 multi-tenant REST API
Full backend implementation:
- Multi-tenant cafe/restaurant management (menus, orders, tables, staff)
- POS order flow with ZarinPal and Snappfood payment integration
- OTP authentication via Kavenegar SMS
- QR digital menu with public discover/finder endpoints
- Customer loyalty, coupons, CRM
- PostgreSQL via EF Core, Redis for caching/sessions
- Background jobs, webhook handlers
- Full migration history

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-05-27 21:33:48 +03:30

44 lines
1.7 KiB
C#

using Meezi.API.Models.Discover;
using Meezi.Core.Discover;
using Meezi.Infrastructure.Discover;
namespace Meezi.API.Services;
public static class CafeDiscoverProfileMapping
{
public static CafeDiscoverProfileDto ToDto(CafeDiscoverProfile profile) =>
new(
profile.Themes,
profile.Size,
profile.Floors,
profile.Vibes,
profile.Occasions,
profile.SpaceFeatures,
profile.NoiseLevel,
profile.PriceTier);
public static CafeDiscoverProfile FromRequest(UpsertCafeDiscoverProfileRequest request) =>
CafeDiscoverProfileSerializer.Sanitize(new CafeDiscoverProfile
{
Themes = request.Themes?.ToList() ?? [],
Size = request.Size,
Floors = request.Floors,
Vibes = request.Vibes?.ToList() ?? [],
Occasions = request.Occasions?.ToList() ?? [],
SpaceFeatures = request.SpaceFeatures?.ToList() ?? [],
NoiseLevel = request.NoiseLevel,
PriceTier = request.PriceTier
});
public static DiscoverProfileTaxonomyDto Taxonomy() =>
new(
CafeDiscoverProfileKeys.Themes.OrderBy(x => x).ToList(),
CafeDiscoverProfileKeys.Sizes.OrderBy(x => x).ToList(),
CafeDiscoverProfileKeys.Floors.OrderBy(x => x).ToList(),
CafeDiscoverProfileKeys.Vibes.OrderBy(x => x).ToList(),
CafeDiscoverProfileKeys.Occasions.OrderBy(x => x).ToList(),
CafeDiscoverProfileKeys.SpaceFeatures.OrderBy(x => x).ToList(),
CafeDiscoverProfileKeys.NoiseLevels.OrderBy(x => x).ToList(),
CafeDiscoverProfileKeys.PriceTiers.OrderBy(x => x).ToList());
}