示例#1
0
        public async Task <IHttpActionResult> Register(DriverBindingModel model)
        {
            model.Role = 0;
            try
            {
                if (!ModelState.IsValid)
                {
                    return(BadRequest(ModelState));
                }



                using (DunkeyContext ctx = new DunkeyContext())
                {
                    if (ctx.Drivers.Any(x => x.Email == model.Email))
                    {
                        return(Content(HttpStatusCode.OK, new CustomResponse <Error>
                        {
                            Message = "Conflict",
                            StatusCode = (int)HttpStatusCode.Conflict,
                            Result = new Error {
                                ErrorMessage = "Driver with email already exists"
                            }
                        }));
                        //return BadRequest("User with the same email already exists.");

                        //return Request.CreateResponse(HttpStatusCode.OK, new Error { ErrorCode = "400 Conflict", Message = "User with email already exist"});
                    }
                    else
                    {
                        Driver driverModel = new Driver
                        {
                            FullName    = model.FullName,
                            Email       = model.Email,
                            Phone       = model.Phone,
                            City        = model.City,
                            VehicleType = model.VehicleType,
                            HearFrom    = model.HearFrom
                        };

                        ctx.Drivers.Add(driverModel);
                        ctx.SaveChanges();
                        using (DriverViewModel driverViewModel = new DriverViewModel(driverModel))
                        {
                            //driverViewModel.Token = await Utility.GenerateToken(driverModel.Email, driverModel.Password, Request);
                            CustomResponse <DriverViewModel> response = new CustomResponse <DriverViewModel> {
                                Message = "Success", StatusCode = (int)HttpStatusCode.OK, Result = driverViewModel
                            };
                            return(Ok(response));
                            //return Request.CreateResponse(HttpStatusCode.OK, response);
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                return(StatusCode(DunkeyDelivery.Utility.LogError(ex)));
            }
        }
        public async Task <IHttpActionResult> AddCompanyDriver(Guid companyId, DriverBindingModel model)
        {
            // Get the current User
            var user = db.Users.Find(User.Identity.GetUserId());

            // Get the users owner and manager profiles
            var manager = user.Profiles.OfType <Manager>().FirstOrDefault();
            var owner   = user.Profiles.OfType <Owner>().FirstOrDefault();

            // get the company
            var company = db.Companies.Find(companyId);

            // get the company owners and managers
            var companyOwners   = company.Profiles.OfType <Owner>();
            var companyManagers = company.Profiles.OfType <Manager>();

            // Check if the current users has rights, if not respond with bad request
            if (!companyManagers.Contains(manager) && !companyOwners.Contains(owner))
            {
                return(BadRequest());
            }

            // get the profile of the driver to be added
            var newDriver = db.Profiles.Find(Guid.Parse(model.Id)) as Driver;

            // If the driver doesnt exist then return BadRequest
            if (newDriver == null)
            {
                return(BadRequest());
            }

            // Add the driver to the company
            company.Profiles.Add(newDriver);

            // Save the changes
            await db.SaveChangesAsync();

            // Return the driver so that client/browser can show success
            return(Ok(new DriverViewModel
            {
                Id = newDriver.Id.ToString()
            }));
        }