Ejemplo n.º 1
0
        public void SetMetaData(Guid userId, TakeDocModel.Document document, TakeDocModel.Entity entity, bool startWorkflow, Newtonsoft.Json.Linq.JArray jsonMetaData)
        {
            ICollection <TakeDocModel.MetaData> metadatas = daoMetaData.GetBy(x => x.MetaDataVersionId == document.DocumentCurrentVersionId && x.EtatDeleteData == false && x.EntityId == document.EntityId);

            foreach (Newtonsoft.Json.Linq.JObject obj in jsonMetaData)
            {
                string name = obj.Value <string>("name");

                TakeDocModel.MetaData meta = metadatas.First(x => x.MetaDataName == name);
                meta.MetaDataValue = obj.Value <string>("value");
                meta.MetaDataText  = obj.Value <string>("text");

                if (obj.Value <string>("type") != null && IsBlob(obj.Value <string>("type")))
                {
                    meta.MetaDataBlob  = obj.Value <string>("value");
                    meta.MetaDataText  = null;
                    meta.MetaDataValue = null;
                }
            }

            try
            {
                daoMetaData.SetMetaData(userId, document.EntityId, document.DocumentTypeId, metadatas);
            }
            catch (System.Data.Entity.Validation.DbEntityValidationException ex1)
            {
                base.Logger.Error(ex1);
                throw ex1;
            }
        }
Ejemplo n.º 2
0
        public void RemoveUser(Guid userId, Guid entityId)
        {
            TakeDocModel.Entity entity = daoEntity.GetBy(x => x.EntityId == entityId).First();
            TakeDocModel.UserTk user   = daoUser.GetBy(x => x.UserTkId == userId).First();

            daoEntity.RemoveUser(user, entity);
        }
Ejemplo n.º 3
0
        private void FillField(TakeDocModel.Version version, TakeDocModel.Entity entity, FileInfo destination)
        {
            TakeDocModel.UserTk user = daoUser.GetBy(x => x.UserTkId == version.Document.DocumentOwnerId).First();

            string directoryEntity = string.Concat(TakeDocModel.Environnement.ModelDirectory, entity.EntityReference);

            ICollection <TakeDocModel.Dto.Document.ReadOnlyMetadata> roMetaDatas = servMetaData.GetReadOnlyMetaData(version);

            ULibre.Drivers.Interface.IDriver model = new ULibre.Drivers.Implementation.OdtDriver();
            model.Open(destination.FullName);

            foreach (TakeDocModel.Dto.Document.ReadOnlyMetadata ro in roMetaDatas.OrderBy(x => x.DisplayIndex))
            {
                if (ro.Type.ToUpper().Equals("IMAGE") == true)
                {
                    model.FillImageBase64(ro.Name, ro.Value);
                }
                else
                {
                    model.FillField(ro.Name, ro.Label);
                }
            }

            ICollection <string> title = new List <string>();

            title.Add("Titre");
            title.Add(version.Document.DocumentLabel);
            if (model.Exists("TabMetadata"))
            {
                model.AddLine("TabMetadata", title.ToArray <string>());
                ICollection <string> reference = new List <string>();
                reference.Add("Référence doc.");
                reference.Add(version.Document.DocumentReference);
                model.AddLine("TabMetadata", reference.ToArray <string>());
                foreach (TakeDocModel.Dto.Document.ReadOnlyMetadata ro in roMetaDatas.OrderBy(x => x.DisplayIndex))
                {
                    ICollection <string> line = new List <string>();
                    line.Add((string.IsNullOrEmpty(ro.Label) ? string.Empty : ro.Label));
                    line.Add((string.IsNullOrEmpty(ro.Text) ? string.Empty : servTraduction.Get("fr", ro.Text)));
                    if (ro.Type.ToUpper().Equals("IMAGE") == false)
                    {
                        model.AddLine("TabMetadata", line.ToArray <string>());
                    }
                }
                model.RemoveEmptyLine("TabMetadata");
            }

            FileInfo logo = new FileInfo(string.Concat(directoryEntity, @"\images\Logo.png"));

            if (logo.Exists)
            {
                model.FillImage("Logo", logo.FullName);
            }

            model.FillField("TypeDocument", version.Document.Type_Document.TypeDocumentLabel);
            model.FillField("Entite", entity.EntityLabel);
            model.FillField("Consultant", string.Concat(user.UserTkFirstName, " ", user.UserTkLastName));

            model.Save();
        }
Ejemplo n.º 4
0
        public void Update(TakeDocModel.UserTk user, TakeDocModel.Entity entity, TakeDocModel.Version version, Newtonsoft.Json.Linq.JObject jsonDocument, Newtonsoft.Json.Linq.JArray jsonMetadata, bool startWorkflow)
        {
            TakeDocModel.Document document = daoDocument.GetBy(x => x.DocumentCurrentVersionId == version.VersionId).First();

            if (jsonDocument != null && jsonDocument.Value <string>("label") != null)
            {
                this.SetTitle(jsonDocument.Value <string>("label"), version.VersionId, user.UserTkId, entity.EntityId);
            }
            if (jsonMetadata != null)
            {
                servMeta.SetMetaData(user.UserTkId, document, entity, startWorkflow, jsonMetadata);
            }

            bool ok = true;

            try
            {
                ok = servMeta.BeProven(document, document.LastVersionMetadata);
            }
            catch (Exception ex) { ok = false; }

            if (jsonDocument != null && ok == true)
            {
                servStatus.SetStatus(document, TakeDocModel.Status_Document.Complete, user.UserTkId, true);
            }
            if (startWorkflow)
            {
                if (ok == false)
                {
                    throw new Exception("MetaData non valide.");
                }
                this.StartWorkflow(document, user, entity.EntityId, false);
            }
        }
Ejemplo n.º 5
0
        public ICollection <object> GetJsonByPeriod(ICollection <JObject> agendas, DateTimeOffset start, DateTimeOffset end)
        {
            ICollection <Guid> agendaIds = new List <Guid>();

            foreach (JObject agenda in agendas)
            {
                agendaIds.Add(new Guid(agenda.Value <string>("id")));
            }

            ICollection <TakeDocModel.Entity>       entitys = daoEntity.GetAll();
            ICollection <TakeDocModel.FolderType>   types   = daoFolderType.GetAll();
            ICollection <TakeDocModel.StatusFolder> status  = daoStatusFolder.GetAll();

            ICollection <TakeDocModel.Folder> folders = this.GetByPeriod(agendaIds, start, end);
            IList <object> items = new List <object>();

            foreach (TakeDocModel.Folder folder in folders)
            {
                TakeDocModel.Entity       entity  = entitys.First(x => x.EntityId == folder.EntityId);
                TakeDocModel.FolderType   ctype   = types.First(x => x.FolderTypeId == folder.FolderTypeId);
                TakeDocModel.StatusFolder cstatus = status.First(x => x.StatusFolderId == folder.FolderStatusId);

                string color = string.Empty;
                ICollection <JObject> currentAgenda = agendas.Where(x => new Guid(x.Value <string>("id")) == folder.FolderOwnerId).ToList();
                if (currentAgenda.Count() > 0)
                {
                    color = currentAgenda.First().Value <string>("color");
                }
                var json = new
                {
                    id                      = folder.FolderId,
                    folderId                = folder.FolderId,
                    folderTypeLabel         = ctype.FolderTypeLabel,
                    title                   = folder.FolderLabel,
                    detail                  = folder.FolderDetail,
                    status                  = cstatus.StatusFolderLabel,
                    statusReference         = cstatus.StatusFolderReference,
                    start                   = folder.FolderDateStart,
                    end                     = folder.FolderDateEnd,
                    allDay                  = false,
                    entityId                = folder.EntityId,
                    entityLabel             = entity.EntityLabel,
                    ownerId                 = folder.FolderOwnerId,
                    folderTypeId            = folder.FolderTypeId,
                    readOnly                = false,
                    color                   = color,
                    documentId              = folder.Document.First().DocumentId,
                    documentVersionId       = folder.Document.First().DocumentCurrentVersionId,
                    documentReference       = folder.Document.First().DocumentReference,
                    typeDocumentId          = folder.Document.First().DocumentTypeId,
                    documentStatutReference = folder.Document.First().Status_Document.StatusDocumentReference
                };
                items.Add(json);
            }

            return(items);
        }
Ejemplo n.º 6
0
        public byte[] Generate(TakeDocModel.Version version, TakeDocModel.Entity entity)
        {
            byte[] data = this.GenerateStarterPdf(version, entity);
            if (data == null)
            {
                return(null);
            }
            PdfReader entetePdf = new PdfReader(data);
            PdfReader imagePdf  = servImage.GetImagePdf(version);

            its.Document document  = new its.Document(iTextSharp.text.PageSize.A4, -70, -70, 0, 0);
            MemoryStream streamOut = new MemoryStream();

            using (PdfCopy copy = new PdfCopy(document, streamOut))
            {
                document.Open();
                for (int p = 1; p <= entetePdf.NumberOfPages; p++)
                {
                    PdfImportedPage page = copy.GetImportedPage(entetePdf, p);
                    copy.AddPage(page);
                }
                copy.FreeReader(entetePdf);
                entetePdf.Close();

                if (imagePdf != null)
                {
                    // add page image to the pdf
                    for (int p = 1; p <= imagePdf.NumberOfPages; p++)
                    {
                        PdfImportedPage page = copy.GetImportedPage(imagePdf, p);
                        copy.AddPage(page);
                    }
                    copy.FreeReader(imagePdf);
                    imagePdf.Close();
                }
            }

            System.IO.FileInfo file = this.GetGenerateFileInfo(entity.EntityReference, version.VersionReference, "pdf");
            System.IO.File.WriteAllBytes(file.FullName, streamOut.ToArray());

            version.VersionPath = file.FullName.Replace(TakeDocModel.Environnement.VersionStoreUNC, string.Empty);
            servVersion.Update(version);
            return(streamOut.ToArray());
        }
Ejemplo n.º 7
0
        /// <summary>
        /// Init tab with metadata name and value
        /// </summary>
        /// <param name="version"></param>
        /// <param name="entity"></param>
        /// <returns></returns>
        private byte[] GenerateStarterPdf(TakeDocModel.Version version, TakeDocModel.Entity entity)
        {
            byte[]   data   = null;
            FileInfo modele = new FileInfo(string.Concat(TakeDocModel.Environnement.ModelDirectory, entity.EntityReference, @"\", version.Document.Type_Document.TypeDocumentReference, "_", "starter.odt"));

            if (modele.Exists == false)
            {
                modele = new FileInfo(string.Concat(TakeDocModel.Environnement.ModelDirectory, "version_starter.odt"));
            }

            FileInfo destinationOdt = new FileInfo(string.Concat(TakeDocModel.Environnement.TempDirectory, Guid.NewGuid().ToString(), modele.Extension));
            FileInfo destinationPdf = new FileInfo(string.Concat(destinationOdt.FullName.Replace(destinationOdt.Extension, ".pdf")));

            modele.CopyTo(destinationOdt.FullName);
            try
            {
                this.FillField(version, entity, destinationOdt);

                System.Diagnostics.ProcessStartInfo info = new System.Diagnostics.ProcessStartInfo(TakeDocModel.Environnement.BatchConvertPdf);
                info.WorkingDirectory = TakeDocModel.Environnement.TempDirectory;
                info.Arguments        = destinationOdt.FullName;
                System.Diagnostics.Process process = System.Diagnostics.Process.Start(info);
                process.WaitForExit();

                data = System.IO.File.ReadAllBytes(destinationPdf.FullName);
            }
            catch (Exception ex)
            {
                this.Logger.Error(ex);
            }
            finally
            {
                if (destinationOdt.Exists)
                {
                    destinationOdt.Delete();
                }
                if (destinationPdf.Exists)
                {
                    destinationPdf.Delete();
                }
            }
            return(data);
        }
Ejemplo n.º 8
0
        private void AddPage(Guid userId, Guid entityId, Guid versionId, byte[] data, string extension, int rotation, int pageNumber)
        {
            base.Logger.DebugFormat("AddPage: add page to version [{0}], extension : [{1}], rotation [{2}]", versionId, extension, rotation);
            TakeDocModel.Page page = daoPage.Add(userId, entityId, versionId, extension, rotation, pageNumber);

            TakeDocModel.Entity entity = daoEntity.GetBy(x => x.EntityId == entityId).First();

            //**********************************
            // Store page in original format
            //**********************************
            // generate full path filename
            System.IO.FileInfo file = this.GeneratePageUNC(entity.EntityReference, page.PageReference, extension);
            // write full path file name
            base.Logger.DebugFormat("AddPage:  write byte in file [{0}]", file.FullName);
            System.IO.File.WriteAllBytes(file.FullName, data);

            page.PagePath = file.FullName.Replace(TakeDocModel.Environnement.PageStoreUNC, string.Empty);

            daoPage.Update(page);
        }
Ejemplo n.º 9
0
        /// <summary>
        /// Send mail to inform that a user ask a account
        /// </summary>
        /// <param name="user">user who want to create account</param>
        /// <param name="entity"></param>
        private void SendMailToInform(TakeDocModel.UserTk user, TakeDocModel.Entity entity)
        {
            string toParameter = string.Concat("MAIL_INFORM_REQUEST_ACCOUNT_TO_", entity.EntityReference);
            ICollection <TakeDocModel.Parameter> parameters = daoParameter.GetBy(x => x.ParameterReference == toParameter);

            if (parameters.Count() == 0)
            {
                throw new Exception("Aucun destinataire ne sera informé dans cette demande. Votre demande ne sera pas prise en compte.");
            }

            string to       = parameters.First().ParameterValue;
            string from     = daoParameter.GetBy(x => x.ParameterReference == "MAIL_INFORM_REQUEST_ACCOUNT_FROM").First().ParameterValue;
            string title    = daoParameter.GetBy(x => x.ParameterReference == "MAIL_INFORM_REQUEST_ACCOUNT_TITLE").First().ParameterValue;
            string bodyFile = daoParameter.GetBy(x => x.ParameterReference == "MAIL_INFORM_REQUEST_ACCOUNT_BODY").First().ParameterValue;

            string path = string.Concat(TakeDocModel.Environnement.ModelDirectory, entity.EntityReference, @"\", "mail", @"\", bodyFile);
            string body = System.IO.File.ReadAllText(path);

            servMail.Send(title, body, from, to, user);
        }
Ejemplo n.º 10
0
        public void Update(Guid userId, Guid entityId, string json, bool startWorkflow)
        {
            using (TransactionScope transaction = new TransactionScope())
            {
                Newtonsoft.Json.Linq.JArray  data      = Newtonsoft.Json.Linq.JArray.Parse(json);
                Newtonsoft.Json.Linq.JObject context   = String.IsNullOrEmpty(data[0].ToString()) ? null : (Newtonsoft.Json.Linq.JObject)data[0];
                Newtonsoft.Json.Linq.JObject document  = String.IsNullOrEmpty(data[1].ToString()) ? null : (Newtonsoft.Json.Linq.JObject)data[1];
                Newtonsoft.Json.Linq.JArray  metadatas = String.IsNullOrEmpty(data[2].ToString()) ? null : (Newtonsoft.Json.Linq.JArray)data[2];
                Newtonsoft.Json.Linq.JArray  pages     = String.IsNullOrEmpty(data[3].ToString()) ? null : (Newtonsoft.Json.Linq.JArray)data[3];
                Guid versionId = new Guid(document.Value <string>("versionId"));

                TakeDocModel.Entity  entity  = daoEntity.GetBy(x => x.EntityId == entityId).First();
                TakeDocModel.Version version = servVersion.GetById(versionId);
                TakeDocModel.UserTk  user    = daoUser.GetBy(x => x.UserTkId == userId).First();

                if (pages != null)
                {
                    servPage.Update(pages, userId, version, entity.EntityId);
                }
                servDocument.Update(user, entity, version, document, metadatas, startWorkflow);
                transaction.Complete();
            }
        }
Ejemplo n.º 11
0
 public TakeDocModel.UserTk Create(TakeDocModel.UserTk user, TakeDocModel.Entity entity)
 {
     this.Create(user);
     servEntity.AddUser(user, entity);
     return(user);
 }
Ejemplo n.º 12
0
 public void AddUser(TakeDocModel.UserTk user, TakeDocModel.Entity entity)
 {
     daoEntity.AddUser(user, entity);
 }
Ejemplo n.º 13
0
 public byte[] Generate(Guid versionId, Guid entityId)
 {
     TakeDocModel.Version version = servVersion.GetBy(x => x.VersionId == versionId && x.EntityId == entityId).First();
     TakeDocModel.Entity  entity  = daoEntity.GetBy(x => x.EntityId == entityId).First();
     return(this.Generate(version, entity));
 }
Ejemplo n.º 14
0
        public TakeDocModel.MetaDataFile Update(string fullName, byte[] data, Guid metadataId, Guid userId, TakeDocModel.Entity entity)
        {
            ICollection <TakeDocModel.MetaDataFile> mFiles = daoMdFile.GetBy(x => x.MetaDataId == metadataId && x.EntityId == entity.EntityId && x.EtatDeleteData == false);

            foreach (TakeDocModel.MetaDataFile mFile in mFiles)
            {
                daoMdFile.Delete(mFile.MetaDataId, userId);
            }

            string reference = daoMdFile.GenerateReference();

            System.IO.FileInfo f    = this.GetFile(fullName);
            System.IO.FileInfo file = this.GenerateUNC(entity.EntityReference, TakeDocModel.Environnement.MetaDataFileStoreUNC, reference, f.Extension.Replace(".", string.Empty), true);

            TakeDocModel.MetaDataFile back = new TakeDocModel.MetaDataFile()
            {
                MetaDataFileReference = reference,
                MetaDataFilePath      = file.FullName.Replace(TakeDocModel.Environnement.MetaDataFileStoreUNC, string.Empty),
                MetaDataFileName      = string.Concat(reference, file.Extension),
                MetaDataId            = metadataId,
                UserCreateData        = userId,
                DateCreateData        = System.DateTimeOffset.UtcNow,
                EtatDeleteData        = false,
                EntityId = entity.EntityId,
                MetaDataFileExtension = file.Extension.Replace(".", string.Empty)
            };
            try
            {
                daoMdFile.Add(back);
                System.IO.File.WriteAllBytes(file.FullName, data);
            }
            catch (System.Data.Entity.Validation.DbEntityValidationException ex1)
            {
                base.Logger.Error(ex1);
                throw ex1;
            }
            catch (Exception ex)
            {
                base.Logger.Error(ex);
                throw ex;
            }
            return(back);
        }