public ResultOperation IsValid(Guid?EntityDefID, Guid?EntityID, System.IO.Stream InputStream, string FileName, Guid DocumentDefID)
        {
            ResultOperation    resultOperation = new ResultOperation();
            sysBpmsDocumentDef documentDef     = new DocumentDefService(base.UnitOfWork).GetInfo(DocumentDefID);

            if (InputStream != null && InputStream.Length > 0)
            {
                string fe = System.IO.Path.GetExtension(FileName).Trim('.').ToLower();
                if (!string.IsNullOrWhiteSpace(documentDef.ValidExtentions) &&
                    !documentDef.ValidExtentions.ToStringObj().Trim().ToLower().Split(',').Any(c => c.Trim('.') == fe))
                {
                    resultOperation.AddError(string.Format(LangUtility.Get("FileNotValid.Text", "Engine"), documentDef.DisplayName));
                    return(resultOperation);
                }
                if (documentDef.MaxSize > 0 && documentDef.MaxSize * 1024 < InputStream.Length)
                {
                    resultOperation.AddError(string.Format(LangUtility.Get("FileSizeError.Text", "Engine"), documentDef.DisplayName));
                    return(resultOperation);
                }
            }

            if (InputStream == null && documentDef.IsMandatory &&
                ((EntityDefID.HasValue && !EntityID.HasValue) || !this.DocumentService.GetList(documentDef.ID, EntityDefID, EntityID, "", false, null, (EntityDefID.HasValue ? (Guid?)null : base.EngineSharedModel.CurrentThreadID)).Any()))
            {
                resultOperation.AddError(string.Format(LangUtility.Get("RequiredFile.Text", "Engine"), documentDef.DisplayName));
            }
            return(resultOperation);
        }
Пример #2
0
        public ResultOperation Delete(Guid documentFolderId)
        {
            ResultOperation resultOperation = new ResultOperation();

            try
            {
                if (resultOperation.IsSuccess)
                {
                    //delete all sysBpmsDocumentDef.
                    List <sysBpmsDocumentDef> list = new DocumentDefService(base.UnitOfWork).GetList(documentFolderId, "", "", null, null);
                    foreach (sysBpmsDocumentDef item in list)
                    {
                        if (resultOperation.IsSuccess)
                        {
                            resultOperation = new DocumentDefService(base.UnitOfWork).Delete(item.ID);
                        }
                    }
                    //delete children
                    List <sysBpmsDocumentFolder> children = this.GetList(documentFolderId, "", "", null);
                    foreach (sysBpmsDocumentFolder item in children)
                    {
                        if (resultOperation.IsSuccess)
                        {
                            resultOperation = this.Delete(item.ID);
                        }
                    }

                    if (resultOperation.IsSuccess)
                    {
                        this.UnitOfWork.Repository <IDocumentFolderRepository>().Delete(documentFolderId);
                        this.UnitOfWork.Save();
                    }
                }
            }
            catch (Exception ex)
            {
                return(base.ExceptionHandler(ex));
            }
            base.FinalizeService(resultOperation);
            return(resultOperation);
        }
        /// <summary>
        /// this method make a list of DocumentDefs name and Entity.PropertyName from DocumentDef which are object.
        /// </summary>
        public List <ComboTreeModel> HelperGetTreeList(bool forCodding = false)
        {
            List <ComboTreeModel>        Items   = new List <ComboTreeModel>();
            List <sysBpmsDocumentFolder> folders = new DocumentFolderService(this.UnitOfWork).GetList(null, "", "", true);
            List <sysBpmsDocumentDef>    Defs    = new DocumentDefService(base.UnitOfWork).GetList(null, "", "", true, null);

            foreach (sysBpmsDocumentFolder item in folders)
            {
                Items.Add(new ComboTreeModel()
                {
                    title = item.DisplayName, id = item.ID.ToString(), state = "closed",
                });
                foreach (sysBpmsDocumentDef documentDef in Defs.Where(c => c.DocumentFolderID == item.ID))
                {
                    Items.LastOrDefault().subs.Add(new ComboTreeModel()
                    {
                        title = documentDef.DisplayName,
                        id    = documentDef.ID.ToString(),
                    });
                }
            }

            return(Items);
        }
        public ResultOperation SaveFile(System.IO.Stream inputStream, string fileName, Guid?entityID, Guid?entityDefID, Guid documentDefID, string captionOF, bool replace)
        {
            ResultOperation resultOperation = new ResultOperation();

            if (inputStream == null || inputStream.Length <= 0)
            {
                return(resultOperation);
            }
            sysBpmsDocument    PostDocument = null;
            sysBpmsDocumentDef documentDef  = new DocumentDefService(base.UnitOfWork).GetInfo(documentDefID);

            try
            {
                Guid   Guid = System.Guid.NewGuid();
                string fe   = System.IO.Path.GetExtension(fileName).Trim('.').ToLower();
                if (!string.IsNullOrWhiteSpace(documentDef.ValidExtentions) &&
                    !documentDef.ValidExtentions.ToStringObj().Trim().ToLower().Split(',').Any(c => c.Trim('.') == fe))
                {
                    resultOperation.AddError(string.Format(LangUtility.Get("FileNotValid.Text", "Engine"), documentDef.DisplayName));
                    return(resultOperation);
                }
                if (documentDef.MaxSize > 0 && documentDef.MaxSize * 1024 < inputStream.Length)
                {
                    resultOperation.AddError(string.Format(LangUtility.Get("FileSizeError.Text", "Engine"), documentDef.DisplayName));
                    return(resultOperation);
                }
                if (!System.IO.Directory.Exists(BPMSResources.FilesRoot.Trim('\\')))
                {
                    System.IO.DirectoryInfo DirectoryInfoObject = System.IO.Directory.CreateDirectory(BPMSResources.FilesRoot.Trim('\\'));
                }

                using (System.IO.FileStream saveStream = System.IO.File.Create(BPMSResources.FilesRoot.Trim('\\') + "\\" + Guid))
                {
                    byte[] bytes  = new byte[1024];
                    int    lenght = 0;
                    while ((lenght = inputStream.Read(bytes, 0, bytes.Length)) > 0)
                    {
                        saveStream.Write(bytes, 0, lenght);
                    }
                }

                PostDocument = new sysBpmsDocument()
                {
                    IsDeleted     = false,
                    AtachDateOf   = DateTime.Now,
                    CaptionOf     = string.IsNullOrWhiteSpace(captionOF) ? documentDef.DisplayName : captionOF,
                    EntityID      = entityID,
                    EntityDefID   = entityDefID,
                    DocumentDefID = documentDefID,
                    FileExtention = fe,
                    GUID          = Guid,
                    ThreadID      = base.EngineSharedModel.CurrentThreadID,
                };

                if (replace)
                {
                    var _Document = this.DocumentService.GetList(documentDefID, entityDefID, entityID, "", false, null, null).FirstOrDefault();
                    if (_Document != null)
                    {
                        _Document.IsDeleted = true;
                        this.DocumentService.Update(_Document);
                    }
                }
                this.DocumentService.Add(PostDocument);
            }
            catch
            {
                resultOperation.AddError(LangUtility.Get("FileSaveError.Text", "Engine"));
            }
            resultOperation.CurrentObject = PostDocument;
            return(resultOperation);
        }