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));
            }
        }
示例#2
0
        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));
            }
        }