Esempio n. 1
0
        // 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);
        }
Esempio n. 2
0
        // 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)));
        }
Esempio n. 3
0
        // 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();
        }