О проекте:
Я работаю над проектом для игровых автоматов.
В моей модели у меня есть класс (Machine
), гдеЯ храню медленно меняющиеся свойства, такие как id
, inventory_code
, machine_type
и т. Д.
Я также храню таблицу фактов (Machine_Facts
), где храню доходы, полученные этими машинами.Эта таблица фактов содержит дату последнего открытия машины, на которой можно было собирать монеты (last_date
).Он также содержит другие свойства, такие как inventory_code
.
Проблема
У меня проблема с работой с представлением.Я хотел бы представить вид, подобный этому:
Это представление, где мы получим доступ к каждому игровому автомату и зарегистрируем, сколько наличных денег мы сняликаждой машины.
Это представление можно сделать, вызывая в основном информацию класса Machine
, за исключением значения Fecha
(свойство last_date
), поскольку это свойство находится в таблице фактов..
Как найти в таблице фактов список inventory_code
и last_date
и вывести самую последнюю дату (это будет двумерный массив).
Послечто я думаю о передаче класса Machine
и массива в View
с помощью ViewModel.
Будет ли это правильным подходом к проблеме?Любые другие предложения?
Данные пока:
Модели:
ViewModel
namespace Application.Models.ApplicationviewModels
{
public class IncomeIndexData
{
public int fact_id { get; set; }
/*Other properties related to the income*/
//This list contains most of the properties of the machine
public List<Machine> MachinesL { get; set; }
}
public class MachineLastDate
{
public string machine_cod { get; set; }
[DisplayFormat(DataFormatString = "{0:dd/MM/yyyy}", ApplyFormatInEditMode = true)]
public DateTime last_date { get; set; }
}
}
Станок
namespace Application.Models
{
public class Machine
{
[Key]
public int machine_id { get; set; }
/*Other machine properties*/
public string inventory_code { get; set; }
public virtual ICollection<Machine_Fact> Machine_Facts { get; set; }
}
}
Факт
public class Machine_Facts
{
[Key]
public int fact_id { get; set; }
/*Other properties*/
//Foreign Keys
[ForeignKey("machine_id")]
public virtual Machine Machines{ get; set; }
public int machine_id { get; set; }
}
Контроллер:
public async Task<IActionResult> Index()
{
var machines = await _context.Machines.Where(t => t.Machines.mac_liquidador == User.Identity.Name).ToListAsync();
var fact_machine_last_liq = await _context.FactIncome.Select(??).ToListAsync();
IncomeIndexData Income = new IncomeIndexData()
{
MachinesL = machines,
MachineLastDate = fact_machine_last_liq
};
return View(Income);
}
Просмотр:
<table style="width:100%;" class="table table-striped table-bordered table-hover">
<thead>
<tr>
<td><div>Familia</div></td>
<td><div>Modelo</div></td>
<td><div>Código</div></td>
<td><div>Contador</div></td>
<td><div>Última Liquidación</div></td>
<td><div>Liquidar</div></td>
</tr>
</thead>
@foreach (var item in Model.ContadoresL)
{
@if (item.tienda_nombre == tienda)
{
<tbody>
@if (item.machine_active != 0)
{
<tr>
<td>@item.mac_familia_desc</td>
<td>@item.mac_descrip</td>
<td>@item.mac_comercial_cod</td>
<td>@item.mac_internal_cod</td>
<td>Fecha</td>
//search the internal_cod in the bidimensional array and bring the date
//@foreach (var date in Model.MachineLastDate){
if(item.mac_internal_cod == date.machine_code){<td>@date.lastdate</td>}
}
//
<td colspan="14" align="right">
<input type="submit" value="Liquidar" />
</td>
</tr>
}
</tbody>
}
}
</table>