// Generates AddViewModel => Card, Car, Employee private async Task <AxaptaViewModels.AddViewModel> GenerateAddViewModel(Models.Axapta model) { if (model != null) { string _make = ""; string _model = ""; SeparateMakeModel(model.MakeModel, ref _make, ref _model); Models.Car car = new Models.Car { Model = _model, Make = _make, NumberPlate = model.NumberPlate }; string[] fullname = model.EmpName.Trim(' ').Split(' '); string fname = "", sname = ""; for (int i = fullname.Length - 1; i >= 0; i--) { if (i == fullname.Length - 1) { sname = fullname[i]; } else { fname += fullname[i]; } } //No duplicates var emp = await _kuras_context.Employee.FirstOrDefaultAsync(x => x.EmplId == model.EmpIdEmplTable); if (emp == null) { emp = new Models.Employee { Fname = fname, Lname = sname, City = model.CityCode, Group = model.EmpGroup, EmplId = model.EmpIdEmplTable }; } Models.Card card = new Models.Card { Number = model.CardNumber, NumberD = model.CardNumberD, Limit = 999 }; AxaptaViewModels.AddViewModel addViewModel = new AxaptaViewModels.AddViewModel { Card = card, Employee = emp, Car = car }; return(addViewModel); } return(null); }
// Hidden function, not available via button // Adds all Axapta table records to Car, Card and Employee tables public async Task <IActionResult> AddAll() { var axaptaData = await _kuras_context.Axapta.ToListAsync(); var addViewModel = new AxaptaViewModels.AddViewModel(); foreach (var el in axaptaData) { addViewModel = await GenerateAddViewModel(el); if (addViewModel != null) { // !!!Check if the car exists _kuras_context.Add(addViewModel.Car); // There can be an employee that drives more than one car if (await _kuras_context.Employee.FirstOrDefaultAsync(x => x.Id == addViewModel.Employee.Id) == null) { _kuras_context.Add(addViewModel.Employee); } // Saving changes to retrieve ids from tables await _kuras_context.SaveChangesAsync(); var newcarId = await _kuras_context.Car.FirstOrDefaultAsync(x => x.NumberPlate == addViewModel.Car.NumberPlate); var newempId = await _kuras_context.Employee.FirstOrDefaultAsync(x => x.EmplId == addViewModel.Employee.EmplId); addViewModel.Card.Car = newcarId.Id; addViewModel.Card.Emp = newempId.Id; _kuras_context.Add(addViewModel.Card); await _kuras_context.SaveChangesAsync(); } } // removes all records from axapta table DeleteTable(); return(RedirectToAction(nameof(Index))); }
// Checks if there have been made any changes to cards, car, employee // If changes are made it updates the table row data private async Task FindChanges1(AxaptaViewModels.AddViewModel model) { // f stands for fetched var fCard = await _kuras_context.Card. FirstOrDefaultAsync(x => x.Number == model.Card.Number && x.NumberD == model.Card.NumberD); if (fCard != null) { var fCar = await _kuras_context.Car.FirstOrDefaultAsync(x => x.Id == fCard.Car); var fEmp = await _kuras_context.Employee.FirstOrDefaultAsync(x => x.Id == fCard.Emp); if (fCar != null && fEmp != null) { // if cars are different if (fCar.NumberPlate != model.Car.NumberPlate) { // updated car var uCar = await _kuras_context.Car. FirstOrDefaultAsync(x => x.NumberPlate == model.Car.NumberPlate); if (uCar != null) { fCard.Car = uCar.Id; } else { Debug.WriteLine("Car with number plate: {0} does not exist", model.Car.NumberPlate); } } if (fEmp.EmplId != model.Employee.EmplId) { var uEmp = await _kuras_context.Employee. FirstOrDefaultAsync(x => x.EmplId == model.Employee.EmplId); if (uEmp != null) { fCard.Emp = uEmp.Id; } else { Debug.WriteLine("Employee with {0} ID does not exist", model.Employee.EmplId); } } //fCar.UpdateValues(model.Car); //fEmp.UpdateValues(model.Employee); } } //var fetchedCar = await _kuras_context.Car.FirstOrDefaultAsync(x => x.NumberPlate == model.Car.NumberPlate); //if(fetchedCar.Model != model.Car.Model || fetchedCar.Make != model.Car.Make) //{ // fetchedCar.Model = model.Car.Model; // fetchedCar.Make = model.Car.Make; // _kuras_context.Update(fetchedCar); //} //var containsCar = await _kuras_context.Car.ContainsAsync(model.Car); //var containsCard = await _kuras_context.Card.ContainsAsync(model.Card); //var containsEmployee = await _kuras_context.Employee.ContainsAsync(model.Employee); //if (!containsCar) // _kuras_context.Update(model.Car); //if (!containsCard) // _kuras_context.Update(model.Card); //if (!containsEmployee) // _kuras_context.Update(model.Employee); //await _kuras_context.SaveChangesAsync(); }