Exemplo n.º 1
0
        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)));
        }
Exemplo n.º 2
0
        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));
            }
        }