public IHttpActionResult CreateAdminDriver([FromBody] NewDriverDto driver) { if (!ModelState.IsValid) { return(BadRequest(Messages.ProcessingError)); } try { if (User.Identity.IsAuthenticated) { var destination = Mapper.Map <NewDriverDto, Driver>(driver); destination.CreatedAt = DateTime.Now; destination.LicenseClassType = destination.LicenseClassType.ToUpper(); destination.LicenseNo = destination.LicenseNo.ToUpper(); destination.NhisCardNo = destination.NhisCardNo.ToUpper(); destination.AppUserId = User.Identity.GetUserId(); _uow.Driver.Add(destination); _uow.Complete(); driver.DriverId = destination.DriverId; } else { return(BadRequest(Messages.AuthenticationRequired)); } } catch (Exception) { return(BadRequest(Messages.EntityCreationError(EntityName))); } return(Created(new Uri($"{Request.RequestUri}/{driver.DriverId}"), Messages.EntityCreationSuccess(EntityName))); }
public async Task <IHttpActionResult> CreateAdminDriverWithImage() { // Check if the request contains multipart/form-data. if (!Request.Content.IsMimeMultipartContent()) { throw new HttpResponseException(HttpStatusCode.UnsupportedMediaType); } if (!Directory.Exists(HttpContext.Current.Server.MapPath("~/App_Data/DriverImages"))) { Directory.CreateDirectory(HttpContext.Current.Server.MapPath("~/App_Data/DriverImages")); } var root = HttpContext.Current.Server.MapPath("~/App_Data/DriverImages"); var provider = new MultipartFormDataStreamProvider(root); var driver = new NewDriverDto(); try { // Read the form data. await Request.Content.ReadAsMultipartAsync(provider); // Get the Data Part var formData = provider.FormData.GetValues("driverDetail"); MultipartFileData imageFile = null; // This illustrates how to get the file names. if (provider.FileData.Count > 0) { imageFile = provider.FileData[0]; } var driverData = formData?.SingleOrDefault(); if (driverData != null) { driver = JsonConvert.DeserializeObject <NewDriverDto>(driverData); if (!ModelState.IsValid) { if (imageFile != null) { File.Delete(Path.Combine(root, imageFile.LocalFileName)); } return(BadRequest(Messages.ProcessingError)); } try { if (User.Identity.IsAuthenticated) { var destination = Mapper.Map <NewDriverDto, Driver>(driver); destination.CreatedAt = DateTime.Now; destination.LicenseClassType = destination.LicenseClassType.ToUpper(); destination.LicenseNo = destination.LicenseNo.ToUpper(); destination.NhisCardNo = destination.NhisCardNo.ToUpper(); destination.AppUserId = User.Identity.GetUserId(); _uow.Driver.Add(destination); _uow.Complete(); driver.DriverId = destination.DriverId; } else { if (imageFile != null) { File.Delete(Path.Combine(root, imageFile.LocalFileName)); } return(BadRequest(Messages.AuthenticationRequired)); } } catch (Exception) { if (imageFile != null) { File.Delete(Path.Combine(root, imageFile.LocalFileName)); } if (driver.DriverId > 0) { var driverInDb = _context.Drivers.Find(driver.DriverId); if (driverInDb != null) { _context.Drivers.Remove(driverInDb); _context.SaveChanges(); } } } if (imageFile != null) { var name = imageFile.Headers.ContentDisposition.FileName.Replace("\"", ""); var file = Guid.NewGuid(); var filename = $"{file}{Path.GetExtension(name)}"; if (File.Exists(Path.Combine(root, filename))) { file = Guid.NewGuid(); } File.Move(imageFile.LocalFileName, Path.Combine(root, filename)); var dImage = new DriverImage(); dImage.DriverId = driver.DriverId; dImage.FileName = filename; dImage.CreatedAt = DateTime.Now; dImage.AppUserId = User.Identity.GetUserId(); _context.DriverImages.Add(dImage); } _uow.Complete(); return(Created(new Uri($"{Request.RequestUri}/1"), Messages.EntityCreationSuccess(EntityName))); } return(BadRequest(Messages.EntityCreationError(EntityName))); } catch (System.Exception ex) { if (driver.DriverId > 0) { var driverInDb = _context.Drivers.Find(driver.DriverId); if (driverInDb != null) { _context.Drivers.Remove(driverInDb); _context.SaveChanges(); } } return(BadRequest(Messages.ProcessingError)); } }