I have three small tables that look like this:

Now I want to get some reports on how many food orders were ordered per day per room.
And I have a ROOM property (it's called AULA ) in the CafeteriaClients table.
I want to indicate how many ordered items were ordered for ROOM. And if OrderedItems from MenuType == EXTRA were ordered in this ROOM, then a list of all clients (Name + Surname) was also ordered. Something like that:
ROOM 1
PASTA: 12
STEAK: 13
SALAD: 12
EXTRAS:
TIRAMISU: 12
UserName 1
UserName 2
....
UserName 12
MACEDONIA: 2
UserName 3
UserName 4
ROOM 2
.....
......
What i have done so far:
[HttpGet]
public IHttpActionResult GetOrdersForRooms()
{
using (var ctx = new CafeteriaContext())
{
var Date = DateTime.Today;
var orders = ctx.CafOrders.Where(d => d.Date == Date)
.SelectMany(o => o.OrderedItems
.Select(c => new {
Room = c.CafClient.AULA,
MealItem = c.Name,
Type = c.MenuType,
ClientName = c.CafClient.Name }))
.ToList();
return Ok(orders);
}
}
, , , LINQ, , SelectMany GroupBy, . , EXTRAS .
{
"Room": "Aula 2",
"MealItem": "Pizza Italiana",
"Type": "EXTRA",
"ClientName": "Riki Gervais"
},
{
"Room": "Aula 3",
"MealItem": "Spaghetti",
"Type": "EXTRA",
"ClientName": "John M Meyer"
},
{
"Room": "Aula 3",
"MealItem": "Sausage",
"Type": "INTERNAL",
"ClientName": "Steve O'Dwayer"
},
{
"Room": "Aula 3",
"MealItem": "Pasta",
"Type": "EXTRA",
"ClientName": "Allan Parker"
},
{
"Room": "Aula 6",
"MealItem": "Riggatoni",
"Type": "EXTERNAL",
"ClientName": "John Susack"
}
Hide result, , LINQ to Entities , . , , ROOMS.
[Table("CafOrders")]
public class CafOrders
{
[Key]
[Required]
public int Id { get; set; }
[Required]
public DateTime Date { get; set; }
public string Note { get; set; }
public decimal Total { get; set; }
public int ClientId { get; set; }
[ForeignKey("ClientId")]
public CafeteriaClients CafeteriaClient { get; set; }
public ICollection<OrderedItems> OrderedItems { get; set; }
}
[Table("CafeteriaClients")]
public class CafeteriaClients
{
[Key]
[Required]
public int Id { get; set; }
[Required]
public string Name { get; set; }
[Required]
public string Surname { get; set; }
public string AULA { get; set; }
public string MATR { get; set; }
[Required]
public string CustomerType { get; set; }
public string GRUPPO { get; set; }
public ICollection<OrderedItems> OrderedItems { get; set; }
}
public class OrderedItems
{
public int Id { get; set; }
public int OrderId { get; set; }
public int ClientId { get; set; }
public string Name { get; set; }
public decimal Price { get; set; }
public string Description { get; set; }
public string MenuType { get; set; }
[ForeignKey("OrderId")]
public CafOrders CafOrder { get; set; }
[ForeignKey("ClientId")]
public CafeteriaClients CafClient { get; set; }
}