ef15fd6247
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>
44 lines
1.7 KiB
C#
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());
|
|
}
|