Example #1
0
        public async Task <IHttpActionResult> UploadLogoFile(int id)
        {
            string logAPI = "[Put] " + Request.RequestUri.ToString();

            // Check if the request contains multipart/form-data.
            if (!Request.Content.IsMimeMultipartContent())
            {
                return(Content(HttpStatusCode.UnsupportedMediaType, HttpResponseFormat.UnsupportedMediaType()));
            }

            EmployeeModel model = new EmployeeModel();
            //FileHelper fileHelper = new FileHelper();
            BlobStorageHelper storageHelper = new BlobStorageHelper(Global._systemStorageName, Global._systemStorageKey, Global._imageStorageContainer);
            string            root          = Path.GetTempPath();
            var provider = new MultipartFormDataStreamProvider(root);

            try
            {
                // Read the form data.
                string PhotoAbsoluteUri = "", IconAbsoluteUri = "";
                await Request.Content.ReadAsMultipartAsync(provider);

                //FileData
                foreach (MultipartFileData fileData in provider.FileData)
                {
                    //string formColumnName = fileData.Headers.ContentDisposition.Name;
                    //string fileExtenionName = fileData.Headers.ContentDisposition.FileName.Replace("\"", "").Split('.')[1];
                    string fileExtension = Path.GetExtension(fileData.Headers.ContentDisposition.FileName.ToLower());
                    if (fileExtension.Equals(".jpg", StringComparison.InvariantCultureIgnoreCase) ||
                        fileExtension.Equals(".jpeg", StringComparison.InvariantCultureIgnoreCase) ||
                        fileExtension.Equals(".png", StringComparison.InvariantCultureIgnoreCase))
                    {
                        int companyId = model.GetCompanyId(id);

                        ImageHelper imageHelper    = new ImageHelper();
                        string      uploadFilePath = String.Format("company-{0}/employee/{}", companyId, id);

                        PhotoAbsoluteUri = imageHelper.PublishImage(fileData.LocalFileName, storageHelper, uploadFilePath, Global._employeePhotoWidthHeight, Global._imageBgColor, Global._imageFormat);
                        IconAbsoluteUri  = imageHelper.PublishImage(fileData.LocalFileName, storageHelper, uploadFilePath, Global._employeeIconWidthHeight, Global._imageBgColor, Global._imageFormat);

                        //string uploadFilePath = String.Format("company-{0}/employee/{1}-default{2}", companyId, id, fileExtension);
                        //fileAbsoluteUri = storageHelper.SaveFiletoStorage(fileData.LocalFileName, uploadFilePath);
                    }
                }

                if (PhotoAbsoluteUri.Equals(""))
                {
                    return(Content(HttpStatusCode.BadRequest, HttpResponseFormat.Error("File is empty or wrong extension name.")));
                }

                //Edit employee photo path
                model.UpdatePhotoURL(id, PhotoAbsoluteUri, IconAbsoluteUri);

                //RedisCacheHelper.DeleteEmployeeCache(id);
                return(Content(HttpStatusCode.OK, HttpResponseFormat.Success(PhotoAbsoluteUri)));
            }
            catch (CDSException cdsEx)
            {
                return(Content(HttpStatusCode.BadRequest, CDSException.GetCDSErrorMessageByCode(cdsEx.ErrorId)));
            }
            catch (System.Exception ex)
            {
                StringBuilder logMessage = LogHelper.BuildExceptionMessage(ex);
                Global._appLogger.Error(logAPI + logMessage);

                return(Content(HttpStatusCode.InternalServerError, ex));
            }
        }