Example #1
0
        public virtual IActionResult AddCar([FromBody] Car car)
        {
            (string, UserType)sender;
            try
            {
                sender = Security.SolveGUID(_context, Request.Headers["Guid"]);
            }
            catch (Exception e)
            {
                return(StatusCode(401, e.Message));
            }
            if (!String.IsNullOrEmpty(car.Username) && (!car.Username.Equals(sender.Item1) && sender.Item2 != UserType.WORKSHOP_EMPLOYEE))
            {
                return(StatusCode(403));
            }
            if (String.IsNullOrEmpty(car.Username))
            {
                car.Username = sender.Item1;
            }
            try
            {
                Validator.Validate(_context, car);
            }
            catch (ValidationException e)
            {
                return(StatusCode(400, e.Message));
            }
            car.Owner = _context.Users.FirstOrDefault(x => x.Username.Equals(car.Username));

            DiagnosticProfile diagnosticProfile = new DiagnosticProfile
            {
                LicensePlate = car.LicensePlate
            };

            car.DiagnosticProfile = diagnosticProfile;
            diagnosticProfile.Car = car;
            car.Insurances        = new List <Insurance>();

            _context.Add(car);
            _context.Add(diagnosticProfile);
            try
            {
                _context.SaveChanges();
            }
            catch (DbUpdateException e)
            {
                return(StatusCode(400, e.Message + " -> " + e.InnerException.Message));
            }
            return(new ObjectResult(car));
        }