// Use this for initialization void Start() { dosScript = dossier.GetComponent <DossierFolder>(); if (GameObject.Find("VariableHandler(Clone)") == null) { GameObject.Instantiate(variableHandlerPrefab, variableHandlerPrefab.transform.position, Quaternion.identity); } }
private DossierFolderModel GetDossierFolderModel(DossierFolder dossierFolder) { DossierFolderModel dossierFolderModel = new DossierFolderModel { IdCategory = dossierFolder.Category != null ? dossierFolder.Category.EntityShortId : (short?)null, IdDossier = dossierFolder.Dossier != null ? dossierFolder.Dossier.UniqueId : (Guid?)null, IdFascicle = dossierFolder.Fascicle != null ? dossierFolder.Fascicle.UniqueId : (Guid?)null, IdRole = dossierFolder.DossierFolderRoles != null && dossierFolder.DossierFolderRoles.Count > 0 ? dossierFolder.DossierFolderRoles.First().EntityShortId : (short)0, Status = (DocSuiteWeb.Model.Entities.Dossiers.DossierFolderStatus)dossierFolder.Status }; return(dossierFolderModel); }
public static DossierLog CreateLog(Dossier dossier, DossierFolder dossierFolder, DossierLogType logType, string logDescription, string registrationUser) { DossierLog dossierLog = new DossierLog() { LogType = logType, LogDescription = logDescription, SystemComputer = Environment.MachineName, RegistrationDate = DateTimeOffset.UtcNow, RegistrationUser = registrationUser, Entity = dossier, DossierFolder = dossierFolder }; dossierLog.Hash = HashGenerator.GenerateHash($"{dossierLog.RegistrationUser}|{dossierLog.LogType}|{dossierLog.LogDescription}|{dossierLog.UniqueId}|{dossier.UniqueId}|{dossierLog.RegistrationDate:yyyyMMddHHmmss}"); return(dossierLog); }
private DossierFolderModel GetDossierFolderModel(DossierFolder dossierFolder) { DossierFolderModel dossierFolderModel = new DossierFolderModel { IdCategory = dossierFolder.Category != null ? dossierFolder.Category.EntityShortId : (short?)null, IdDossier = dossierFolder.Dossier != null ? dossierFolder.Dossier.UniqueId : (Guid?)null, IdFascicle = dossierFolder.Fascicle != null ? dossierFolder.Fascicle.UniqueId : (Guid?)null, IdRole = dossierFolder.DossierFolderRoles != null && dossierFolder.DossierFolderRoles.Count > 0 ? dossierFolder.DossierFolderRoles.First().EntityShortId : (short?)null, JsonMetadata = dossierFolder.JsonMetadata, Name = dossierFolder.Name, Status = (DocSuiteWeb.Model.Entities.Dossiers.DossierFolderStatus)dossierFolder.Status, UniqueId = dossierFolder.UniqueId, DossierFolderLevel = dossierFolder.DossierFolderLevel, DossierFolderPath = dossierFolder.DossierFolderPath }; return(dossierFolderModel); }
private void InsertProcessDossierFolder(Fascicle entity, Fascicle entityTransformed) { if (entity.DossierFolders == null || entity.DossierFolders.Any(df => entityTransformed.DossierFolders.Any(d => d.UniqueId == df.UniqueId))) { return; } HashSet <DossierFolder> dossierFolders = new HashSet <DossierFolder>(); DossierFolder dossierFolderParent = null; DossierFolder dossierFascicleFolder = null; foreach (DossierFolder dossierFolder in entity.DossierFolders) { dossierFolderParent = _unitOfWork.Repository <DossierFolder>().GetIncludeDossier(dossierFolder.UniqueId); if (dossierFolderParent != null) { dossierFolderParent.Status = DossierFolderStatus.Folder; _unitOfWork.Repository <DossierFolder>().Update(dossierFolderParent); dossierFascicleFolder = new DossierFolder() { UniqueId = Guid.NewGuid(), Fascicle = entityTransformed, Dossier = dossierFolderParent.Dossier, ParentInsertId = dossierFolderParent.UniqueId, Name = $"{entityTransformed.Title}-{entityTransformed.FascicleObject}", Status = DossierFolderStatus.Fascicle, Category = entityTransformed.Category }; dossierFolders.Add(dossierFascicleFolder); } } DossierFolder oldDossierFolder = entityTransformed.DossierFolders.FirstOrDefault(); entityTransformed.DossierFolders = dossierFolders; _unitOfWork.Repository <DossierFolder>().InsertRange(entityTransformed.DossierFolders); if (oldDossierFolder != null && oldDossierFolder.Status == DossierFolderStatus.Fascicle) { _unitOfWork.Repository <DossierFolder>().Delete(oldDossierFolder); } }
protected override Fascicle BeforeCreate(Fascicle entity) { entity.FascicleFolders.Clear(); if (entity.Contacts != null) { HashSet <Contact> contacts = new HashSet <Contact>(); Contact contact = null; foreach (Contact item in entity.Contacts) { contact = _unitOfWork.Repository <Contact>().Find(item.EntityId); if (contact != null) { contacts.Add(contact); } } entity.Contacts = contacts; } if (entity.FascicleDocuments != null && entity.FascicleDocuments.Count > 0) { _unitOfWork.Repository <FascicleDocument>().InsertRange(entity.FascicleDocuments); } if (entity.Category != null) { entity.Category = _unitOfWork.Repository <Category>().Find(entity.Category.EntityShortId); } if (entity.MetadataRepository != null) { entity.MetadataRepository = _unitOfWork.Repository <MetadataRepository>().Find(entity.MetadataRepository.UniqueId); } if (entity.Container != null) { entity.Container = _unitOfWork.Repository <Container>().Find(entity.Container.EntityShortId); } if (entity.FascicleTemplate != null) { entity.FascicleTemplate = _unitOfWork.Repository <ProcessFascicleTemplate>().Find(entity.FascicleTemplate.UniqueId); } entity.Number = -1; DateTimeOffset date = entity.StartDate; entity.StartDate = DateTimeOffset.UtcNow; if (CurrentInsertActionType.HasValue && CurrentInsertActionType.Value == InsertActionType.InsertPeriodicFascicle) { CategoryFascicle relatedCategoryFascicle = _unitOfWork.Repository <CategoryFascicle>().GetByEnvironment(entity.Category.EntityShortId, entity.DSWEnvironment.Value).FirstOrDefault(); FasciclePeriod period = _unitOfWork.Repository <FasciclePeriod>().Find(relatedCategoryFascicle.FasciclePeriod.UniqueId); entity.StartDate = PeriodHelper.GetCurrentPeriodStart(period.PeriodName, date); if (entity.FascicleObject.Contains(string.Concat(" - ", period.PeriodName))) { entity.FascicleObject = entity.FascicleObject.Replace(entity.FascicleObject.Split('-').LastOrDefault(), ""); } entity.FascicleObject = string.Concat(entity.FascicleObject, " - ", period.PeriodName, ", ", period.PeriodName.Equals("Annuale", StringComparison.InvariantCultureIgnoreCase) ? entity.StartDate.Year.ToString() : CultureInfo.CurrentCulture.TextInfo.ToTitleCase(CultureInfo.CurrentCulture.DateTimeFormat.GetMonthName(entity.StartDate.Month))); } entity.Year = Convert.ToInt16(entity.StartDate.Year); if (entity.Category != null) { int latestNumber = _unitOfWork.Repository <Fascicle>().GetLatestNumber(entity.Year, entity.Category.EntityShortId); entity.Number = ++latestNumber; IEnumerable <short> idCategories = entity.Category.FullIncrementalPath .Split('|') .Select(f => short.Parse(f)); string categorySectionTitle = string.Join(".", _unitOfWork.Repository <Category>().Queryable(true) .Where(f => idCategories.Contains(f.EntityShortId)) .OrderBy(f => f.EntityShortId) .Where(f => f.Code > 0) .Select(f => f.Code)); entity.Title = $"{entity.Year}.{categorySectionTitle}-{entity.Number:0000000}"; } if (entity.DossierFolders != null) { HashSet <DossierFolder> dossierFolders = new HashSet <DossierFolder>(); DossierFolder dossierFolderParent = null; DossierFolder dossierFascicleFolder = null; foreach (DossierFolder dossierFolder in entity.DossierFolders) { dossierFolderParent = _unitOfWork.Repository <DossierFolder>().GetIncludeDossier(dossierFolder.UniqueId); if (dossierFolderParent != null) { dossierFolderParent.Status = DossierFolderStatus.Folder; _unitOfWork.Repository <DossierFolder>().Update(dossierFolderParent); dossierFascicleFolder = new DossierFolder() { UniqueId = Guid.NewGuid(), Fascicle = entity, Dossier = dossierFolderParent.Dossier, ParentInsertId = dossierFolderParent.UniqueId, Name = $"{entity.Title}-{entity.FascicleObject}", Status = DossierFolderStatus.Fascicle, Category = entity.Category }; dossierFolders.Add(dossierFascicleFolder); } } entity.DossierFolders = dossierFolders; _unitOfWork.Repository <DossierFolder>().InsertRange(entity.DossierFolders); } if (entity.FascicleRoles != null) { HashSet <FascicleRole> fascicleRoles = new HashSet <FascicleRole>(); FascicleRole fascicleRole; Role role; foreach (FascicleRole item in entity.FascicleRoles) { fascicleRole = new FascicleRole(); role = _unitOfWork.Repository <Role>().Find(item.Role.EntityShortId); if (role != null && !fascicleRoles.Any(f => f.Role.EntityShortId == role.EntityShortId)) { fascicleRole.Role = role; fascicleRole.Fascicle = entity; fascicleRole.IsMaster = item.IsMaster; fascicleRole.AuthorizationRoleType = item.AuthorizationRoleType; switch (entity.FascicleType) { case FascicleType.Activity: { fascicleRole.AuthorizationRoleType = AuthorizationRoleType.Responsible; break; } case FascicleType.Procedure: case FascicleType.Period: { if (item.IsMaster) { fascicleRole.AuthorizationRoleType = AuthorizationRoleType.Responsible; } break; } } fascicleRoles.Add(fascicleRole); } } entity.FascicleRoles = fascicleRoles; _unitOfWork.Repository <FascicleRole>().InsertRange(entity.FascicleRoles); } if (!string.IsNullOrEmpty(entity.MetadataValues)) { ICollection <MetadataValueModel> metadataValueModels = JsonConvert.DeserializeObject <ICollection <MetadataValueModel> >(entity.MetadataValues); MetadataDesignerModel metadataDesignerModel = JsonConvert.DeserializeObject <MetadataDesignerModel>(entity.MetadataDesigner); ICollection <MetadataValue> metadataValues = new List <MetadataValue>(); ICollection <MetadataValueContact> metadataContactValues = new List <MetadataValueContact>(); foreach (MetadataValueModel metadataValueModel in metadataValueModels.Where(x => metadataDesignerModel.ContactFields.Any(xx => xx.KeyName == x.KeyName))) { metadataContactValues.Add(CreateMetadataContactValue(metadataValueModel, entity)); } MetadataValue metadataValue; foreach (MetadataValueModel metadataValueModel in metadataValueModels.Where(x => !metadataDesignerModel.ContactFields.Any(xx => xx.KeyName == x.KeyName))) { metadataValue = MetadataValueService.CreateMetadataValue(metadataDesignerModel, metadataValueModel); metadataValue.Fascicle = entity; metadataValues.Add(metadataValue); } entity.SourceMetadataValues = metadataValues; entity.MetadataValueContacts = metadataContactValues; _unitOfWork.Repository <MetadataValue>().InsertRange(entity.SourceMetadataValues); _unitOfWork.Repository <MetadataValueContact>().InsertRange(entity.MetadataValueContacts); } _unitOfWork.Repository <FascicleLog>().Insert(CreateLog(entity, FascicleLogType.Insert, "Inserimento nuovo fascicolo", CurrentDomainUser.Account)); _unitOfWork.Repository <FascicleFolder>().Insert(new FascicleFolder { UniqueId = entity.UniqueId, Fascicle = entity, Name = "Tutti i documenti", Category = null, Status = FascicleFolderStatus.Active, Typology = FascicleFolderTypology.Root }); return(base.BeforeCreate(entity)); }
protected override Dossier BeforeCreate(Dossier entity) { _unitOfWork.Repository <DossierLog>().Insert(BaseDossierService <DossierLog> .CreateLog(entity, null, DossierLogType.Insert, string.Concat("Nuovo dossier '", entity.Subject, "'"), CurrentDomainUser.Account)); if (entity.Contacts != null) { HashSet <Contact> contacts = new HashSet <Contact>(); Contact contact = null; foreach (Contact item in entity.Contacts) { contact = _unitOfWork.Repository <Contact>().Find(item.EntityId); if (contact != null) { contacts.Add(contact); } } entity.Contacts = contacts; } if (entity.MetadataRepository != null) { entity.MetadataRepository = _unitOfWork.Repository <MetadataRepository>().Find(entity.MetadataRepository.UniqueId); } if (entity.Container != null) { entity.Container = _unitOfWork.Repository <Container>().Find(entity.Container.EntityShortId); } if (entity.DossierRoles != null) { HashSet <DossierRole> dossierRoles = new HashSet <DossierRole>(); foreach (DossierRole item in entity.DossierRoles) { dossierRoles.Add(CreateDossierRole(item, entity)); } entity.DossierRoles = dossierRoles.Where(f => f != null).ToList(); _unitOfWork.Repository <DossierRole>().InsertRange(entity.DossierRoles); } if (entity.DossierDocuments != null && entity.DossierDocuments.Count > 0) { _unitOfWork.Repository <DossierDocument>().InsertRange(entity.DossierDocuments); } if (!string.IsNullOrEmpty(entity.MetadataValues)) { ICollection <MetadataValueModel> metadataValueModels = JsonConvert.DeserializeObject <ICollection <MetadataValueModel> >(entity.MetadataValues); MetadataDesignerModel metadataDesignerModel = JsonConvert.DeserializeObject <MetadataDesignerModel>(entity.MetadataDesigner); ICollection <MetadataValue> metadataValues = new List <MetadataValue>(); ICollection <MetadataValueContact> metadataContactValues = new List <MetadataValueContact>(); foreach (MetadataValueModel metadataValueModel in metadataValueModels.Where(x => metadataDesignerModel.ContactFields.Any(xx => xx.KeyName == x.KeyName))) { metadataContactValues.Add(CreateMetadataContactValue(metadataValueModel, entity)); } MetadataValue metadataValue; foreach (MetadataValueModel metadataValueModel in metadataValueModels.Where(x => !metadataDesignerModel.ContactFields.Any(xx => xx.KeyName == x.KeyName))) { metadataValue = MetadataValueService.CreateMetadataValue(metadataDesignerModel, metadataValueModel); metadataValue.Dossier = entity; metadataValues.Add(metadataValue); } entity.SourceMetadataValues = metadataValues; entity.MetadataValueContacts = metadataContactValues; _unitOfWork.Repository <MetadataValue>().InsertRange(entity.SourceMetadataValues); _unitOfWork.Repository <MetadataValueContact>().InsertRange(entity.MetadataValueContacts); } if (entity.Category != null) { entity.Category = _unitOfWork.Repository <Category>().Find(entity.Category.EntityShortId); } else { UserLog userLog = _unitOfWork.Repository <UserLog>().GetBySystemUser(CurrentDomainUser.Account); Tenant currentTenant = _unitOfWork.Repository <Tenant>().GetByUniqueId(userLog.CurrentTenantId).FirstOrDefault(); entity.Category = _unitOfWork.Repository <Category>().GetDefaultCategoryByTenantAOOId(currentTenant.TenantAOO.UniqueId); } entity.Status = DossierStatus.Open; entity.Year = Convert.ToInt16(DateTime.UtcNow.Year); entity.Number = -1; int latestNumber = _unitOfWork.Repository <Dossier>().GetLatestNumber(entity.Year); entity.Number = ++latestNumber; DossierFolder rootNode = new DossierFolder { UniqueId = entity.UniqueId, Dossier = entity, Name = $"Dossier {entity.Year}/{entity.Number:0000000}" , Status = DossierFolderStatus.InProgress, }; _unitOfWork.Repository <DossierFolder>().Insert(rootNode); _unitOfWork.Repository <DossierLog>().Insert(BaseDossierService <DossierLog> .CreateLog(entity, rootNode, DossierLogType.FolderInsert, string.Concat("Creata cartella radice '", rootNode.Name, "'"), CurrentDomainUser.Account)); return(base.BeforeCreate(entity)); }