public async Task <IHttpActionResult> RemoveAccountVehicleLink(VehicleRequest request) { Services.Log.Info("Account Vehicle Link Removal Requested Vehicle [" + request.VehicleGUID + "]"); string vehicleGUID = request.VehicleGUID; // Get the logged-in user. var currentUser = this.User as ServiceUser; if (currentUser.Id != null) { VehicleAccountLink dbLink = new VehicleAccountLink(); stranddContext context = new stranddContext(); //Loading List of VehicleAccountLinks from DB Context dbLink = await(from r in context.VehicleAccountLinks where (r.UserProviderID == currentUser.Id && r.VehicleGUID == vehicleGUID) select r).FirstOrDefaultAsync(); if (dbLink != null) { context.VehicleAccountLinks.Remove(dbLink); await context.SaveChangesAsync(); string responseText = "Removed Vehicle [" + vehicleGUID + "] from Account [" + currentUser.Id + "]"; Services.Log.Info(responseText); return(Ok(responseText)); } else { string responseText = "No Link found for Vehicle [" + vehicleGUID + "] from Account [" + currentUser.Id + "]"; Services.Log.Info(responseText); return(BadRequest(responseText)); } } else { string responseText = "Request made without Current User Logged In"; Services.Log.Warn(responseText); return(BadRequest(responseText)); } }
public async Task <HttpResponseMessage> CustomerNewVehicle(VehicleRequest vehicleRequest) { Services.Log.Info("New Vehicle Registration Request [API]"); bool accountLinkExists = false; // Get the logged-in user. var currentUser = this.User as ServiceUser; stranddContext context = new stranddContext(); //Checks for unique Registration Number Vehicle vehicle = await context.Vehicles.Where(a => a.RegistrationNumber == vehicleRequest.RegistrationNumber).SingleOrDefaultAsync(); if (vehicle != null) { //Return Failed Response string responseText = "Vehicle Already Exists. Registration Number [" + vehicle.RegistrationNumber + "]"; Services.Log.Warn(responseText); return(this.Request.CreateResponse(HttpStatusCode.BadRequest, WebConfigurationManager.AppSettings["RZ_MobileClientUserWarningPrefix"] + responseText)); } else { //Vehicle Creation Vehicle newVehicle = new Vehicle { Id = Guid.NewGuid().ToString(), Make = vehicleRequest.Make, Model = vehicleRequest.Model, Year = vehicleRequest.Year, Color = vehicleRequest.Color, RegistrationNumber = vehicleRequest.RegistrationNumber }; context.Vehicles.Add(newVehicle); if (currentUser.Id != null) { //Adding the VehicleAccountLink VehicleAccountLink newVehicleAccountLink = new VehicleAccountLink { Id = Guid.NewGuid().ToString(), VehicleGUID = newVehicle.Id, UserProviderID = currentUser.Id }; context.VehicleAccountLinks.Add(newVehicleAccountLink); accountLinkExists = true; } try { await context.SaveChangesAsync(); } catch (DbEntityValidationException dbEx) { foreach (var validationErrors in dbEx.EntityValidationErrors) { foreach (var validationError in validationErrors.ValidationErrors) { Services.Log.Error("Property: " + validationError.PropertyName + " | Error: " + validationError.ErrorMessage); } } } Services.Log.Info("New Vehicle Created #" + newVehicle.Id); if (accountLinkExists) { Services.Log.Info("Vehicle Linked to " + currentUser.Id); } else { Services.Log.Info("Vehicle Not Linked to Account " + currentUser.Id); } VehicleRequestResponse returnObject = new VehicleRequestResponse { VehicleGUID = newVehicle.Id }; string responseText = JsonConvert.SerializeObject(returnObject); return(this.Request.CreateResponse(HttpStatusCode.Created, responseText)); } }