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)); }