264 lines
11 KiB
C#
264 lines
11 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Threading.Tasks;
|
|
using Microsoft.AspNetCore.Mvc;
|
|
using Microsoft.AspNetCore.Mvc.RazorPages;
|
|
using Microsoft.EntityFrameworkCore;
|
|
using EveryThing.Data;
|
|
using EveryThing.Models;
|
|
using EveryThing.Models.CodeTable;
|
|
using EveryThing.Models.Vehicle;
|
|
using Microsoft.AspNetCore.Authorization;
|
|
using Microsoft.AspNetCore.Identity;
|
|
using EveryThing.Models.Invoice;
|
|
using JetBrains.Annotations;
|
|
using Microsoft.AspNetCore.Mvc.Rendering;
|
|
|
|
namespace EveryThing.Pages.CodeTableVehicles
|
|
{
|
|
[Authorize(Roles = "Administrator,TransportThingUser")]
|
|
public class IndexModel : PageModel
|
|
{
|
|
private readonly ApplicationDbContext _context;
|
|
private readonly UserManager<IdentityApplicationUser> _userManager;
|
|
|
|
public class AddEditCodeTableVehicle
|
|
{
|
|
public Vehicle Vehicle { get; set; }
|
|
public bool Edit { get; set; }
|
|
public int IdCodeTableVehicle { get; set; }
|
|
public SelectList FuelTypes { get; set; }
|
|
public SelectList Departments { get; set; }
|
|
public SelectList VehicleGroups { get; set; }
|
|
public SelectList VehicleMakes{ get; set; }
|
|
public SelectList VehicleTypes { get; set; }
|
|
//public IList<File> Files { get; set; }
|
|
}
|
|
|
|
public IndexModel(ApplicationDbContext context, UserManager<IdentityApplicationUser> userManager)
|
|
{
|
|
_context = context;
|
|
_userManager = userManager;
|
|
}
|
|
|
|
public IList<Vehicle> Vehicles { get;set; }
|
|
|
|
public async Task OnGetAsync(string searchString, string inactiveVehicles)
|
|
{
|
|
var user = _userManager.GetUserAsync(User).Result;
|
|
|
|
ViewData["SearchString"] = searchString;
|
|
ViewData["InactiveVehicles"] = inactiveVehicles == "on" ? "checked" : "";
|
|
|
|
Vehicles = await _context.Vehicles
|
|
.Where(x => x.IdCompanyFk == user.IdCompanyFk)
|
|
.OrderBy(x => x.Active)
|
|
.ThenBy(x => x.Title)
|
|
.ToListAsync();
|
|
|
|
// Search string
|
|
if (!string.IsNullOrEmpty(searchString))
|
|
{
|
|
Vehicles = Vehicles.Where(s => s.Title.Contains(searchString)).ToList();
|
|
}
|
|
}
|
|
|
|
public IActionResult OnGetCodeTableVehicleModal([CanBeNull] string title, bool edit, int idCodeTableVehicle)
|
|
{
|
|
var user = _userManager.GetUserAsync(User).Result;
|
|
|
|
Vehicle vehicle = null;
|
|
|
|
if (edit)
|
|
{
|
|
vehicle = _context.Vehicles
|
|
.Where(x => x.IdCompanyFk == user.IdCompanyFk)
|
|
.FirstOrDefault(x => x.IdVehicle == idCodeTableVehicle);
|
|
|
|
//files = _context.Files
|
|
// .Where(x => x.IdCompanyFk == user.IdCompanyFk
|
|
// && x.IdReferenceFk == item.IdItem
|
|
// && x.FileType == FileType.CodeTableItem)
|
|
// .ToList();
|
|
}
|
|
|
|
if (vehicle == null)
|
|
{
|
|
vehicle = new Vehicle();
|
|
|
|
if (title != null)
|
|
vehicle.Title = title;
|
|
|
|
vehicle.Active = true;
|
|
}
|
|
|
|
var departments = new SelectList(_context.CodeTableDepartements.Where(x => x.IdCompanyFk == user.IdCompanyFk && x.Active), "IdDepartement", "Title");
|
|
var fuelTypes = new SelectList(_context.VehicleFuelTypes.Where(x => x.IdCompanyFk == user.IdCompanyFk), "IdVehicleFuelType", "Title");
|
|
var groups = new SelectList(_context.VehicleGroups.Where(x => x.IdCompanyFk == user.IdCompanyFk && x.Active), "IdVehicleGroup", "Title");
|
|
var makes = new SelectList(_context.VehicleMakes.Where(x => x.IdCompanyFk == user.IdCompanyFk && x.Active), "IdVehicleMake", "Title");
|
|
var types = new SelectList(_context.VehicleTypes.Where(x => x.IdCompanyFk == user.IdCompanyFk && x.Active), "IdVehicleType", "Title");
|
|
|
|
return Partial("AddEditVehicleModal", new CodeTableVehicles.IndexModel.AddEditCodeTableVehicle
|
|
{
|
|
Vehicle = vehicle,
|
|
Edit = edit,
|
|
IdCodeTableVehicle = idCodeTableVehicle,
|
|
Departments = departments,
|
|
FuelTypes = fuelTypes,
|
|
VehicleGroups = groups,
|
|
VehicleMakes = makes,
|
|
VehicleTypes = types
|
|
//Files = files,
|
|
});
|
|
}
|
|
|
|
public IActionResult OnPostCodeTableVehicle(bool edit, Vehicle vehicleData)
|
|
{
|
|
var user = _userManager.GetUserAsync(User).Result;
|
|
var successful = true;
|
|
var error = "";
|
|
|
|
if (edit)
|
|
{
|
|
var vehicle = _context.Vehicles
|
|
.Where(x => x.IdCompanyFk == user.IdCompanyFk)
|
|
.FirstOrDefault(x => x.IdVehicle == vehicleData.IdVehicle);
|
|
if (vehicle != null)
|
|
{
|
|
vehicle.Title = vehicleData.Title;
|
|
vehicle.IdVehicleTypeFk = vehicleData.IdVehicleTypeFk;
|
|
vehicle.IdMakeFk = vehicleData.IdMakeFk;
|
|
vehicle.Model = vehicleData.Model;
|
|
vehicle.Year = vehicleData.Year;
|
|
vehicle.VinNumber = vehicleData.VinNumber;
|
|
vehicle.EngineNumber = vehicleData.EngineNumber;
|
|
vehicle.IdFuelTypeFk = vehicleData.IdFuelTypeFk;
|
|
vehicle.IdDepartementFk = vehicleData.IdDepartementFk;
|
|
vehicle.IdVehicleGroupFk = vehicleData.IdVehicleGroupFk;
|
|
vehicle.VehicleMeterType = vehicleData.VehicleMeterType;
|
|
vehicle.Note = vehicleData.Note;
|
|
vehicle.RegistrationNumber = vehicleData.RegistrationNumber;
|
|
vehicle.Active = vehicleData.Active;
|
|
_context.SaveChanges();
|
|
}
|
|
else
|
|
{
|
|
successful = false;
|
|
error = $"Codetable vehicle with ID: {vehicleData.IdVehicle} not found";
|
|
}
|
|
}
|
|
else
|
|
{
|
|
var vehicle = new Vehicle
|
|
{
|
|
IdCompanyFk = user.IdCompanyFk,
|
|
Title = vehicleData.Title,
|
|
IdVehicleTypeFk = vehicleData.IdVehicleTypeFk,
|
|
IdMakeFk = vehicleData.IdMakeFk,
|
|
Model = vehicleData.Model,
|
|
Year = vehicleData.Year,
|
|
VinNumber = vehicleData.VinNumber,
|
|
EngineNumber = vehicleData.EngineNumber,
|
|
IdFuelTypeFk = vehicleData.IdFuelTypeFk,
|
|
IdDepartementFk = vehicleData.IdDepartementFk,
|
|
IdVehicleGroupFk = vehicleData.IdVehicleGroupFk,
|
|
VehicleMeterType = vehicleData.VehicleMeterType,
|
|
Note = vehicleData.Note,
|
|
RegistrationNumber = vehicleData.RegistrationNumber,
|
|
Active = vehicleData.Active
|
|
};
|
|
_context.Vehicles.Add(vehicle);
|
|
_context.SaveChanges();
|
|
|
|
vehicleData.IdVehicle = vehicle.IdVehicle;
|
|
}
|
|
|
|
return new JsonResult(new { idCodeTableVehicle = vehicleData.IdVehicle, error = error, successful = successful });
|
|
}
|
|
|
|
public IActionResult OnDeleteCodeTableVehicle(int idCodeTableVehicle)
|
|
{
|
|
var user = _userManager.GetUserAsync(User).Result;
|
|
var successful = true;
|
|
var error = "";
|
|
|
|
var vehicle = _context.Vehicles
|
|
.Where(x => x.IdCompanyFk == user.IdCompanyFk)
|
|
.FirstOrDefault(x => x.IdVehicle == idCodeTableVehicle);
|
|
if (vehicle != null)
|
|
{
|
|
_context.Vehicles.Remove(vehicle);
|
|
_context.SaveChanges();
|
|
}
|
|
else
|
|
{
|
|
successful = false;
|
|
error = $"Codetable vehicle with ID: {idCodeTableVehicle} not found";
|
|
}
|
|
|
|
return new JsonResult(new { idCodeTableItem = idCodeTableVehicle, error = error, successful = successful });
|
|
}
|
|
|
|
public IActionResult OnGetCodeTableVehicle(int idCodeTableVehicle)
|
|
{
|
|
var user = _userManager.GetUserAsync(User).Result;
|
|
|
|
var successful = true;
|
|
var error = "";
|
|
var vehicleInUse = false;
|
|
|
|
var vehicle = _context.Vehicles
|
|
.Where(x => x.IdCompanyFk == user.IdCompanyFk)
|
|
.Include(x => x.VehicleVehicleFueling)
|
|
.Include(x => x.VehicleVehicleIncident)
|
|
.Include(x => x.VehicleVehicleIssue)
|
|
.Include(x => x.VehicleNote)
|
|
.Include(x => x.VehicleVehicleDriver)
|
|
.Include(x => x.VehicleVehicleMeterReading)
|
|
.Include(x => x.VehicleVehicleDrive)
|
|
.Include(x => x.VehicleTransportLoadingOrder)
|
|
.FirstOrDefault(x => x.IdVehicle == idCodeTableVehicle);
|
|
|
|
if (vehicle == null)
|
|
{
|
|
successful = false;
|
|
error = $"Codetable vehicle with ID: {idCodeTableVehicle} not found";
|
|
}
|
|
else
|
|
{
|
|
vehicleInUse = vehicle.VehicleVehicleFueling.Count > 0
|
|
|| vehicle.VehicleVehicleIncident.Count > 0
|
|
|| vehicle.VehicleVehicleIssue.Count > 0
|
|
|| vehicle.VehicleVehicleDriver.Count > 0
|
|
|| vehicle.VehicleVehicleMeterReading.Count > 0
|
|
|| vehicle.VehicleVehicleDrive.Count > 0
|
|
|| vehicle.VehicleTransportLoadingOrder.Count > 0
|
|
|| vehicle.VehicleNote.Count > 0;
|
|
vehicle.VehicleVehicleFueling = null;
|
|
vehicle.VehicleVehicleIncident = null;
|
|
vehicle.VehicleVehicleIssue = null;
|
|
vehicle.VehicleNote = null;
|
|
vehicle.VehicleVehicleDriver = null;
|
|
vehicle.VehicleVehicleMeterReading = null;
|
|
vehicle.VehicleVehicleDrive = null;
|
|
vehicle.VehicleTransportLoadingOrder = null;
|
|
}
|
|
|
|
return new JsonResult(new { vehicle, error, successful, vehicleInUse });
|
|
}
|
|
|
|
public IActionResult OnGetCodeTableVehiclesSelect()
|
|
{
|
|
var user = _userManager.GetUserAsync(User).Result;
|
|
|
|
var vehicles = _context.Vehicles
|
|
.Where(x => x.IdCompanyFk == user.IdCompanyFk
|
|
&& x.Active)
|
|
.OrderBy(x => x.Title);
|
|
|
|
return new JsonResult(new { vehicles = new SelectList(vehicles, "IdVehicle", "Title") });
|
|
}
|
|
}
|
|
}
|