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>
This commit is contained in:
@@ -0,0 +1,43 @@
|
||||
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());
|
||||
}
|
||||
Reference in New Issue
Block a user