130 lines
5.8 KiB
Plaintext
130 lines
5.8 KiB
Plaintext
@using OneForMe.Controllers
|
|
@model DashboardViewModel
|
|
|
|
@{
|
|
ViewData["Title"] = "Dashboard";
|
|
}
|
|
|
|
<div class="container mt-5">
|
|
<div class="row mb-4">
|
|
<div class="col-md-12">
|
|
<h1>Welcome to OneForMe</h1>
|
|
<p>Logged in as: <strong>@User.Identity?.Name</strong></p>
|
|
<a href="/AuthView/Logout" class="btn btn-danger">Logout</a>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="row mb-4">
|
|
<div class="col-md-6">
|
|
<div class="card shadow">
|
|
<div class="card-body">
|
|
<h5 class="card-title">Create New Order</h5>
|
|
<p class="card-text">Start a new group order and invite friends</p>
|
|
<a href="/order/create" class="btn btn-primary">Create Order</a>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="col-md-6">
|
|
<div class="card shadow">
|
|
<div class="card-body">
|
|
<h5 class="card-title">Join Order</h5>
|
|
<p class="card-text">Join an existing order using the order code</p>
|
|
<form method="get" action="/order/join" class="mb-3">
|
|
<div class="input-group">
|
|
<input type="text" class="form-control" name="code" placeholder="Enter order code" required>
|
|
<button class="btn btn-success" type="submit">Join</button>
|
|
</div>
|
|
</form>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<hr>
|
|
|
|
<!-- Created Orders -->
|
|
<div class="row mb-4">
|
|
<div class="col-md-12">
|
|
<h3>My Created Orders</h3>
|
|
@if (Model.CreatedOrders.Any())
|
|
{
|
|
<div class="row">
|
|
@foreach (var order in Model.CreatedOrders)
|
|
{
|
|
<div class="col-md-6 mb-3">
|
|
<div class="card shadow">
|
|
<div class="card-body">
|
|
<h5 class="card-title">@order.CreatorName</h5>
|
|
<p class="card-text">
|
|
<small class="text-muted">Code: <strong>@order.OrderCode</strong></small><br>
|
|
<small class="text-muted">Created: @order.CreatedAt.ToString("MMM dd, yyyy HH:mm")</small><br>
|
|
<small>Items: @order.MenuItems.Count | Orders: @order.OrderItems.Count</small>
|
|
</p>
|
|
<p class="text-success"><strong>Total: $@order.OrderItems.Sum(oi => oi.MenuItem.Price * oi.Quantity).ToString("F2")</strong></p>
|
|
<div class="d-flex gap-2">
|
|
<a href="/order/details?code=@order.OrderCode" class="btn btn-sm btn-primary">View</a>
|
|
@if (!order.IsClosed)
|
|
{
|
|
<a href="/order/close?code=@order.OrderCode" class="btn btn-sm btn-danger">Close Order</a>
|
|
}
|
|
else
|
|
{
|
|
<span class="badge bg-secondary">Closed</span>
|
|
}
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
}
|
|
</div>
|
|
}
|
|
else
|
|
{
|
|
<div class="alert alert-info">You haven't created any orders yet.</div>
|
|
}
|
|
</div>
|
|
</div>
|
|
|
|
<hr>
|
|
|
|
<!-- Joined Orders -->
|
|
<div class="row">
|
|
<div class="col-md-12">
|
|
<h3>Orders I Joined</h3>
|
|
@if (Model.JoinedOrders.Any())
|
|
{
|
|
<div class="row">
|
|
@foreach (var order in Model.JoinedOrders)
|
|
{
|
|
var myItems = order.OrderItems.Where(oi => oi.ParticipantEmail == User.Identity?.Name || oi.ParticipantName == User.Identity?.Name).ToList();
|
|
<div class="col-md-6 mb-3">
|
|
<div class="card shadow">
|
|
<div class="card-body">
|
|
<h5 class="card-title">@order.CreatorName</h5>
|
|
<p class="card-text">
|
|
<small class="text-muted">Code: <strong>@order.OrderCode</strong></small><br>
|
|
<small class="text-muted">Created by: @order.CreatorName</small><br>
|
|
<small>My items: @myItems.Count</small>
|
|
</p>
|
|
<p class="text-warning"><strong>I owe: $@myItems.Sum(oi => oi.MenuItem.Price * oi.Quantity).ToString("F2")</strong></p>
|
|
<div class="d-flex gap-2">
|
|
<a href="/order/join?code=@order.OrderCode" class="btn btn-sm btn-primary">View</a>
|
|
@if (!order.IsClosed)
|
|
{
|
|
<a href="/order/join?code=@order.OrderCode" class="btn btn-sm btn-success">Add More</a>
|
|
}
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
}
|
|
</div>
|
|
}
|
|
else
|
|
{
|
|
<div class="alert alert-info">You haven't joined any orders yet.</div>
|
|
}
|
|
</div>
|
|
</div>
|
|
</div> |