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