private ServiceResponse HandleUploadRequest(HttpPostedFileBase file, MemoryStream stream, bool hasErr)
        {
            AisFileRow fileRow = new AisFileRow
            {
                ContentType = file.ContentType,
                FileSize    = file.ContentLength,
                FileName    = file.FileName,
                UploadedBy  = User.Identity.Name,
                Uploaded    = DateTime.Now
            };
            var  folderPath = HostingEnvironment.MapPath(UploadSettings.Current.Path + ((hasErr) ? "AisResultError" : "AisResult"));
            bool exists     = Directory.Exists(folderPath);

            if (!exists)
            {
                Directory.CreateDirectory(folderPath);
            }

            fileRow.FilePath = Path.Combine(folderPath, Guid.NewGuid().ToString("N") + Path.GetExtension(file.FileName));
            using (FileStream fs = new FileStream(fileRow.FilePath, FileMode.Create, FileAccess.Write))
            {
                stream.WriteTo(fs);
            }
            return(new UploadResponse <AisFileRow>()
            {
                TemporaryFile = fileRow.FilePath,
                IsImage = false,
                UploadedFile = fileRow
            });
        }
        public ActionResult GetResultFromFile(string status)
        {
            HttpPostedFileBase file = this.HttpContext.Request.Files[0];

            if (file == null)
            {
                throw new ArgumentNullException("file");
            }
            if (file.FileName.IsEmptyOrNull())
            {
                throw new ArgumentNullException("filename");
            }
            try
            {
                ListContainer <MyRow> list = new ListContainer <MyRow>();
                var spsHelper = new SpreedSheetHelper(Server.MapPath("~/Content/templates/import/result/ais/CapNhatPhongBanUser.xlsx"));
                var stream    = new MemoryStream();
                file.InputStream.CopyTo(stream);
                list = spsHelper.ReadFromFile(list, stream);
                stream.Seek(0, SeekOrigin.Begin);

                var        response = this.ExecuteMethod(() => HandleUploadRequest(file, stream, spsHelper.HasError));
                AisFileRow fileRow  = ((UploadResponse <AisFileRow>)response.Data).UploadedFile;

                if (fileRow != null)
                {
                    if (spsHelper.HasError)
                    {
                        return(new Result <ServiceResponse>(new ServiceResponse
                        {
                            Error = new ServiceError()
                            {
                                Code = "FileErr",
                                Message = fileRow.FilePath
                            }
                        }));
                    }
                    var fileRowResponse = this.InTransaction("Default", (uow) =>
                    {
                        var saveFileResponse = new Ais.Repositories.AisFileRepository().Create(uow, new SaveRequest <AisFileRow>
                        {
                            Entity = fileRow
                        });
                        if (saveFileResponse.EntityId.HasValue)
                        {
                            foreach (var item in list.Entities)
                            {
                                var saveresponse = new AisUserChangeOURepository().UpdateResult(uow, new SaveRequest <MyRow>
                                {
                                    Entity = item
                                });
                                if (saveresponse.EntityId.HasValue)
                                {
                                    new Ais.Repositories.AisFileResultsRepository().Create(uow, new SaveRequest <AisFileResultsRow>
                                    {
                                        Entity = new AisFileResultsRow
                                        {
                                            FileId  = Convert.ToInt32(saveFileResponse.EntityId),
                                            ReqId   = Convert.ToInt32(saveresponse.EntityId),
                                            ReqType = 3
                                        }
                                    });
                                }
                            }
                        }
                        return(saveFileResponse);
                    }).Data;
                }
                if (!(Request.Headers["Accept"] ?? "").Contains("json"))
                {
                    response.ContentType = "text/plain";
                }
                ((UploadResponse <AisFileRow>)response.Data).UploadedFile = null;
                return(response);
            }
            catch (Exception ex)
            {
                return(new Result <ServiceResponse>(new ServiceResponse
                {
                    Error = new ServiceError()
                    {
                        Code = "Exception",
                        Message = ex.Message
                    }
                }));
            }
        }