예제 #1
0
        public static UDSRepository GetByIdDocumentUnit(this IRepository <UDSRepository> repository, Guid idDocumentUnit, bool optimization = false)
        {
            UDSRepository result = repository.Query(t => t.DocumentUnits.Any(f => f.UniqueId == idDocumentUnit && f.Environment >= 100), optimization)
                                   .SelectAsQueryable()
                                   .FirstOrDefault();

            return(result);
        }
예제 #2
0
 private UDSRepository MapUDSRepositoryModel(UDSRepository udsRepository, UDSRepositoryModel udsRepositoryModel)
 {
     udsRepository.UniqueId       = udsRepositoryModel.Id;
     udsRepository.DSWEnvironment = udsRepositoryModel.DSWEnvironment;
     udsRepository.Name           = udsRepository.Name;
     udsRepository.Status         = udsRepository.Status;
     return(udsRepository);
 }
예제 #3
0
        public async Task <IHttpActionResult> Post([FromBody] BuildActionModel model, Guid idRepository)
        {
            return(await WebApiHelpers.ActionHelper.TryCatchWithLoggerAsync(async() =>
            {
                UDSRepository repository = _unitOfWork.Repository <UDSRepository>().Find(idRepository);
                if (repository != null && model != null && !string.IsNullOrEmpty(model.Model))
                {
                    UDSRelationModel relationModel = JsonConvert.DeserializeObject <UDSRelationModel>(model.Model);
                    ICollection <UDSRole> rolesToManage = GetEntityRoles(relationModel.Roles, repository);
                    ICollection <UDSUser> usersToManage = GetEntityUsers(relationModel.Users, repository);
                    ICollection <UDSPECMail> pecMailsToManage = GetEntityPECMails(relationModel.PECMails, repository);
                    ICollection <UDSMessage> messagesToManage = GetEntityMessages(relationModel.Messages, repository);
                    ICollection <UDSDocumentUnit> documentUnitsToManage = GetEntityDocumentUnits(relationModel.DocumentUnits, repository);
                    ICollection <UDSContact> contactsToManage = GetEntityContacts(relationModel.Contacts, repository);
                    ICollection <UDSCollaboration> collaborationsToManage = GetEntityCollaborations(relationModel.Collaborations, repository);

                    if (model.BuildType == BuildActionType.Build)
                    {
                        _unitOfWork.BeginTransaction();

                        await BuildUDSRoleAsync(rolesToManage);
                        await BuildUDSUserAsync(usersToManage);
                        await BuildUDSPECMailAsync(pecMailsToManage);
                        await BuildUDSMessageAsync(messagesToManage);
                        await BuildUDSDocumentUnitAsync(documentUnitsToManage);
                        await BuildUDSContactAsync(contactsToManage);
                        await BuildUDSCollaborationAsync(collaborationsToManage);

                        await _unitOfWork.SaveAsync();
                    }

                    if (model.BuildType == BuildActionType.Synchronize)
                    {
                        _unitOfWork.BeginTransaction();

                        await SynchroniseUDSRoleAsync(rolesToManage, model.ReferenceId, repository);
                        await SynchroniseUDSUserAsync(usersToManage, model.ReferenceId, repository);
                        await SynchroniseUDSPECMailAsync(pecMailsToManage, model.ReferenceId, repository);
                        await SynchroniseUDSMessageAsync(messagesToManage, model.ReferenceId, repository);
                        await SynchroniseUDSDocumentUnitAsync(documentUnitsToManage, model.ReferenceId, repository);
                        await SynchroniseUDSContactAsync(contactsToManage, model.ReferenceId, repository);
                        await SynchroniseUDSCollaborationAsync(collaborationsToManage, model.ReferenceId, repository);

                        await _unitOfWork.SaveAsync();
                    }
                }
                return Ok(model);
            }, BadRequest, Content, InternalServerError, _logger, LogCategories));
        }
예제 #4
0
        internal static UDSLog CreateUDSLog(Guid idUDS, UDSRepository repository, string logDescription, UDSLogType logType, string registrationUser, DateTimeOffset?logDate = null, string systemComputer = "")
        {
            UDSLog log = new UDSLog()
            {
                LogType          = logType,
                LogDescription   = logDescription,
                SystemComputer   = string.IsNullOrEmpty(systemComputer) ? Environment.MachineName : systemComputer,
                Entity           = repository,
                RegistrationDate = logDate.HasValue && logDate.Value != DateTimeOffset.MinValue ? logDate.Value : DateTimeOffset.UtcNow,
                RegistrationUser = registrationUser,
                IdUDS            = idUDS,
                Environment      = repository.DSWEnvironment,
            };

            log.Hash = HashGenerator.GenerateHash(string.Concat(log.RegistrationUser, "|", log.LogType, "|", log.LogDescription, "|", log.UniqueId, "|", idUDS, "|", log.RegistrationDate.ToString("yyyyMMddHHmmss")));
            return(log);
        }
예제 #5
0
        private async Task SaveUDSRepositoryAsync(UDSBuildModel model, string idContainer)
        {
            try
            {
                if (model.UDSRepository != null)
                {
                    if (!model.UDSRepository.ActiveDate.HasValue)
                    {
                        _logger.WriteError(new LogMessage("Active date is empty"), LogCategories);
                        throw new ArgumentNullException("Active date is empty");
                    }

                    UDSRepository       udsRepository        = new UDSRepository(model.UDSRepository.Id);
                    UDSSchemaRepository lastSchemaRepository = CurrentUDSSchemaRepository;

                    _logger.WriteInfo(new LogMessage(string.Concat("Last valid Repository : ", lastSchemaRepository.UniqueId)), LogCategories);

                    udsRepository.ActiveDate          = model.UDSRepository.ActiveDate.Value;
                    udsRepository.ExpiredDate         = null;
                    udsRepository.LastChangedDate     = DateTimeOffset.UtcNow;
                    udsRepository.Version             = 1;
                    udsRepository.ModuleXML           = model.XMLContent;
                    udsRepository.Name                = model.UDSRepository.Name;
                    udsRepository.SchemaRepository    = lastSchemaRepository;
                    udsRepository.SequenceCurrentYear = (short)model.UDSRepository.ActiveDate.Value.Year;
                    udsRepository.Alias               = model.UDSRepository.Alias;
                    udsRepository.DSWEnvironment      = model.UDSRepository.DSWEnvironment;
                    udsRepository.Status              = DocSuiteWeb.Entity.UDS.UDSRepositoryStatus.Confirmed;
                    udsRepository.Container           = new DocSuiteWeb.Entity.Commons.Container()
                    {
                        EntityShortId = Convert.ToInt16(idContainer)
                    };

                    udsRepository = await UpdateUDSRepositoryAsync(udsRepository);

                    _logger.WriteInfo(new LogMessage(string.Concat("Repository is updated: ", udsRepository.UniqueId)), LogCategories);
                }
            }
            catch (Exception ex)
            {
                _logger.WriteError(ex, LogCategories);
                throw ex;
            }
        }
예제 #6
0
        private async Task SynchroniseUDSRoleAsync(ICollection <UDSRole> rolesToManage, Guid udsId, UDSRepository repository)
        {
            ICollection <UDSRole> oldAuthorizations = _unitOfWork.Repository <UDSRole>().GetByUDSId(udsId).ToList();

            foreach (UDSRole item in oldAuthorizations.Where(f => !rolesToManage.Any(c => c.Relation.EntityShortId == f.Relation.EntityShortId)))
            {
                item.Repository = repository;
                await _udsAuthorizationService.DeleteAsync(item);
            }
            foreach (UDSRole item in rolesToManage.Where(f => !oldAuthorizations.Any(c => c.Relation.EntityShortId == f.Relation.EntityShortId)))
            {
                await _udsAuthorizationService.CreateAsync(item);
            }
        }
예제 #7
0
        private ICollection <UDSCollaboration> GetEntityCollaborations(ICollection <UDSCollaborationModel> udsCollaborationModels, UDSRepository repository)
        {
            ICollection <UDSCollaboration> collaborations = new List <UDSCollaboration>();
            UDSCollaboration udsCollaboration;

            foreach (UDSCollaborationModel collaboration in udsCollaborationModels)
            {
                udsCollaboration             = _mapperUnitOfWork.Repository <IUDSCollaborationEntityMapper>().Map(collaboration, new UDSCollaboration());
                udsCollaboration.Relation    = _unitOfWork.Repository <Collaboration>().Find(collaboration.IdCollaboration);
                udsCollaboration.Environment = repository.DSWEnvironment;
                udsCollaboration.Repository  = repository;
                collaborations.Add(udsCollaboration);
            }
            return(collaborations);
        }
예제 #8
0
        private ICollection <UDSContact> GetEntityContacts(ICollection <UDSContactModel> udsContactModels, UDSRepository repository)
        {
            ICollection <UDSContact> contacts = new List <UDSContact>();
            UDSContact udsContact;

            foreach (UDSContactModel contact in udsContactModels)
            {
                udsContact             = _mapperUnitOfWork.Repository <IUDSContactEntityMapper>().Map(contact, new UDSContact());
                udsContact.Environment = repository.DSWEnvironment;
                udsContact.Repository  = repository;
                if (udsContact.ContactType == (short)UDSContactType.Normal)
                {
                    udsContact.Relation = _unitOfWork.Repository <Contact>().Find(contact.IdContact);
                }
                contacts.Add(udsContact);
            }
            return(contacts);
        }
예제 #9
0
        /// <summary>
        /// Aggiorno la UDSRepository attiva in questo momento.
        /// Aggiongo la repository presente nel comando
        /// Associo l'ultimo schema
        /// </summary>
        /// <param name="model"></param>
        /// <returns></returns>
        private async Task UpdateUDSRepositoryAsync(UDSBuildModel model, bool requiredRevisionUDSRepository = true)
        {
            try
            {
                if (model.UDSRepository != null)
                {
                    if (!model.UDSRepository.ActiveDate.HasValue)
                    {
                        _logger.WriteError(new LogMessage("Active date is empty"), LogCategories);
                        throw new ArgumentNullException("Active date is empty");
                    }

                    UDSRepository currentRepository = await GetCurrentUDSRepositoryAsync(model.UDSRepository.Name);

                    UDSRepository newRepository = await GetUDSRepositoryAsync(model.UDSRepository.Id);

                    _logger.WriteInfo(new LogMessage($"Last valid Repository is {CurrentUDSSchemaRepository.UniqueId}"), LogCategories);

                    if (requiredRevisionUDSRepository)
                    {
                        currentRepository.ExpiredDate       = model.UDSRepository.ActiveDate;
                        newRepository.ActiveDate            = model.UDSRepository.ActiveDate.Value;
                        newRepository.ExpiredDate           = null;
                        newRepository.LastChangedDate       = DateTimeOffset.UtcNow;
                        newRepository.ModuleXML             = model.XMLContent;
                        newRepository.Name                  = model.UDSRepository.Name;
                        newRepository.SchemaRepository      = CurrentUDSSchemaRepository;
                        newRepository.Version               = ++currentRepository.Version;
                        newRepository.Status                = DocSuiteWeb.Entity.UDS.UDSRepositoryStatus.Confirmed;
                        newRepository.SequenceCurrentYear   = currentRepository.SequenceCurrentYear;
                        newRepository.SequenceCurrentNumber = currentRepository.SequenceCurrentNumber;
                        currentRepository = await UpdateUDSRepositoryAsync(currentRepository);

                        _logger.WriteInfo(new LogMessage($"Repository {currentRepository.UniqueId}/{currentRepository.Name}/{newRepository.Version} has expired"), LogCategories);
                        newRepository = await UpdateUDSRepositoryAsync(newRepository);

                        _logger.WriteInfo(new LogMessage($"Repository {newRepository.UniqueId}/{newRepository.Name}/{newRepository.Version} has been successfully confirmed."), LogCategories);
                    }
                    else
                    {
                        currentRepository.ModuleXML = model.XMLContent;
                        currentRepository           = await UpdateUDSRepositoryAsync(currentRepository);

                        _logger.WriteInfo(new LogMessage($"Repository {newRepository.UniqueId}/{newRepository.Name}/{newRepository.Version} has been successfully updated."), LogCategories);
                        newRepository = await DeleteUDSRepositoryAsync(newRepository);

                        if (newRepository != null)
                        {
                            _logger.WriteInfo(new LogMessage($"Draft repository {newRepository.UniqueId}/{newRepository.Name}/{newRepository.Version} has been deleted"), LogCategories);
                        }
                        else
                        {
                            _logger.WriteWarning(new LogMessage($"Error occoured during deleting draft repository {newRepository.UniqueId}/{newRepository.Name}/{newRepository.Version}"), LogCategories);
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                _logger.WriteError(ex, LogCategories);
                throw ex;
            }
        }
예제 #10
0
        private async Task SynchroniseUDSContactAsync(ICollection <UDSContact> contactsToManage, Guid udsId, UDSRepository repository)
        {
            ICollection <UDSContact> oldContacts = _unitOfWork.Repository <UDSContact>().GetByUDSId(udsId).ToList();

            foreach (UDSContact item in oldContacts.Where(f => !contactsToManage.Any(c => (c.ContactType == (short)UDSContactType.Normal && c.Relation != null && f.Relation != null && c.Relation.EntityId == f.Relation.EntityId) || (c.ContactType == (short)UDSContactType.Manual && c.ContactManual == f.ContactManual))))
            {
                item.Repository = repository;
                await _udsContactService.DeleteAsync(item);
            }
            foreach (UDSContact item in contactsToManage.Where(f => !oldContacts.Any(c => (c.ContactType == (short)UDSContactType.Normal && c.Relation != null && f.Relation != null && c.Relation.EntityId == f.Relation.EntityId) || (c.ContactType == (short)UDSContactType.Manual && c.ContactManual == f.ContactManual))))
            {
                await _udsContactService.CreateAsync(item);
            }
        }
예제 #11
0
        private async Task SynchroniseUDSMessageAsync(ICollection <UDSMessage> messagesToManage, Guid udsId, UDSRepository repository)
        {
            ICollection <UDSMessage> oldMessages = _unitOfWork.Repository <UDSMessage>().GetByUDSId(udsId).ToList();

            foreach (UDSMessage item in oldMessages.Where(f => !messagesToManage.Any(c => c.Relation.EntityId == f.Relation.EntityId)))
            {
                item.Repository = repository;
                await _udsMessageService.DeleteAsync(item);
            }
            foreach (UDSMessage item in messagesToManage.Where(f => !oldMessages.Any(c => c.Relation.EntityId == f.Relation.EntityId)))
            {
                await _udsMessageService.CreateAsync(item);
            }
        }
예제 #12
0
        private ICollection <UDSRole> GetEntityRoles(ICollection <UDSRoleModel> roleModels, UDSRepository repository)
        {
            ICollection <UDSRole> roles = new List <UDSRole>();
            UDSRole udsRole;

            foreach (UDSRoleModel roleModel in roleModels)
            {
                udsRole             = _mapperUnitOfWork.Repository <IUDSRoleEntityMapper>().Map(roleModel, new UDSRole());
                udsRole.Relation    = _unitOfWork.Repository <Role>().Find(roleModel.IdRole);
                udsRole.Environment = repository.DSWEnvironment;
                udsRole.Repository  = repository;
                roles.Add(udsRole);
            }
            return(roles);
        }
예제 #13
0
        public static UDSRepository GetByName(this IRepository <UDSRepository> repository, string name, bool optimization = true)
        {
            UDSRepository result = repository.Query(t => t.Name.Equals(name), optimization).SelectAsQueryable().FirstOrDefault();

            return(result);
        }
예제 #14
0
        public static UDSRepository GetPreviousVersionWithUDSTypologies(this IRepository <UDSRepository> repository, UDSRepository entityUDSRepository)
        {
            IQueryable <UDSRepository> temp = repository.Query(x => x.Name.Equals(entityUDSRepository.Name) && x.ExpiredDate != null && x.Version == entityUDSRepository.Version - 1)
                                              .Include(t => t.UDSTypologies)
                                              .SelectAsQueryable();

            return(temp.FirstOrDefault());
        }
예제 #15
0
        private async Task SynchroniseUDSUserAsync(ICollection <UDSUser> usersToManage, Guid udsId, UDSRepository repository)
        {
            ICollection <UDSUser> oldUsers = _unitOfWork.Repository <UDSUser>().GetByUDSId(udsId).ToList();

            foreach (UDSUser item in oldUsers.Where(f => !usersToManage.Any(c => c.Account == f.Account)))
            {
                item.Repository = repository;
                await _udsUserService.DeleteAsync(item);
            }
            foreach (UDSUser item in usersToManage.Where(f => !oldUsers.Any(c => c.Account == f.Account)))
            {
                await _udsUserService.CreateAsync(item);
            }
        }
예제 #16
0
        private async Task SynchroniseUDSPECMailAsync(ICollection <UDSPECMail> pecMailsToManage, Guid udsId, UDSRepository repository)
        {
            ICollection <UDSPECMail> oldPECMails = _unitOfWork.Repository <UDSPECMail>().GetByUDSId(udsId).ToList();

            foreach (UDSPECMail item in oldPECMails.Where(f => !pecMailsToManage.Any(c => c.Relation.EntityId == f.Relation.EntityId)))
            {
                item.Repository = repository;
                await _udsPECMailService.DeleteAsync(item);
            }
            foreach (UDSPECMail item in pecMailsToManage.Where(f => !oldPECMails.Any(c => c.Relation.EntityId == f.Relation.EntityId)))
            {
                await _udsPECMailService.CreateAsync(item);
            }
        }
예제 #17
0
        private ICollection <UDSUser> GetEntityUsers(ICollection <UDSUserModel> udsUserModels, UDSRepository repository)
        {
            ICollection <UDSUser> users = new List <UDSUser>();
            UDSUser udsUser;

            foreach (UDSUserModel userModel in udsUserModels)
            {
                udsUser             = _mapperUnitOfWork.Repository <IUDSUserEntityMapper>().Map(userModel, new UDSUser());
                udsUser.Environment = repository.DSWEnvironment;
                udsUser.Repository  = repository;
                users.Add(udsUser);
            }
            return(users);
        }
예제 #18
0
        private async Task SynchroniseUDSDocumentUnitAsync(ICollection <UDSDocumentUnit> documentUnitsToManage, Guid udsId, UDSRepository repository)
        {
            ICollection <UDSDocumentUnit> oldDocumentUnits = _unitOfWork.Repository <UDSDocumentUnit>().GetByUDSId(udsId).ToList();

            foreach (UDSDocumentUnit item in oldDocumentUnits.Where(f => !documentUnitsToManage.Any(c => c.Relation.UniqueId == f.Relation.UniqueId)))
            {
                item.Repository = repository;
                await _udsDocumentUnitService.DeleteAsync(item);
            }
            foreach (UDSDocumentUnit item in documentUnitsToManage.Where(f => !oldDocumentUnits.Any(c => c.Relation.UniqueId == f.Relation.UniqueId)))
            {
                await _udsDocumentUnitService.CreateAsync(item);
            }
        }
예제 #19
0
        private ICollection <UDSPECMail> GetEntityPECMails(ICollection <UDSPECMailModel> udsPecMailModels, UDSRepository repository)
        {
            ICollection <UDSPECMail> pecMails = new List <UDSPECMail>();
            UDSPECMail udsPECMail;

            foreach (UDSPECMailModel pecMail in udsPecMailModels)
            {
                udsPECMail             = _mapperUnitOfWork.Repository <IUDSPECMailEntityMapper>().Map(pecMail, new UDSPECMail());
                udsPECMail.Relation    = _unitOfWork.Repository <PECMail>().Find(pecMail.IdPECMail);
                udsPECMail.Environment = repository.DSWEnvironment;
                udsPECMail.Repository  = repository;
                pecMails.Add(udsPECMail);
            }
            return(pecMails);
        }
예제 #20
0
        private async Task SynchroniseUDSCollaborationAsync(ICollection <UDSCollaboration> collaborationsToManage, Guid udsId, UDSRepository repository)
        {
            ICollection <UDSCollaboration> oldCollaborations = _unitOfWork.Repository <UDSCollaboration>().GetByUDSId(udsId).ToList();

            foreach (UDSCollaboration item in oldCollaborations.Where(f => !collaborationsToManage.Any(c => c.Relation.EntityId == f.Relation.EntityId)))
            {
                item.Repository = repository;
                await _udsCollaborationService.DeleteAsync(item);
            }
            foreach (UDSCollaboration item in collaborationsToManage.Where(f => !oldCollaborations.Any(c => c.Relation.EntityId == f.Relation.EntityId)))
            {
                await _udsCollaborationService.CreateAsync(item);
            }
        }
예제 #21
0
        private ICollection <UDSMessage> GetEntityMessages(ICollection <UDSMessageModel> udsMessageModels, UDSRepository repository)
        {
            ICollection <UDSMessage> messages = new List <UDSMessage>();
            UDSMessage udsMessage;

            foreach (UDSMessageModel message in udsMessageModels)
            {
                udsMessage             = _mapperUnitOfWork.Repository <IUDSMessageEntityMapper>().Map(message, new UDSMessage());
                udsMessage.Relation    = _unitOfWork.Repository <DocSuiteWeb.Entity.Messages.Message>().Find(message.IdMessage);
                udsMessage.Environment = repository.DSWEnvironment;
                udsMessage.Repository  = repository;
                messages.Add(udsMessage);
            }
            return(messages);
        }
예제 #22
0
        private ICollection <UDSDocumentUnit> GetEntityDocumentUnits(ICollection <UDSDocumentUnitModel> udsDocumentUnitModels, UDSRepository repository)
        {
            ICollection <UDSDocumentUnit> documentUnits = new List <UDSDocumentUnit>();
            UDSDocumentUnit udsDocumentUnit;

            foreach (UDSDocumentUnitModel documentUnit in udsDocumentUnitModels)
            {
                udsDocumentUnit             = _mapperUnitOfWork.Repository <IUDSDocumentUnitEntityMapper>().Map(documentUnit, new UDSDocumentUnit());
                udsDocumentUnit.Relation    = _unitOfWork.Repository <DocumentUnit>().Find(documentUnit.IdDocumentUnit);
                udsDocumentUnit.Environment = repository.DSWEnvironment;
                udsDocumentUnit.Repository  = repository;
                documentUnits.Add(udsDocumentUnit);
            }
            return(documentUnits);
        }
        protected void PrepareDocumentUnitLog(FascicleDocumentUnit entity, FascicleLog fascicleLog)
        {
            if (entity.DocumentUnit.Environment == (int)DSWEnvironmentType.Protocol)
            {
                Protocol    protocol    = _unitOfWork.Repository <Protocol>().GetByUniqueId(entity.DocumentUnit.UniqueId).SingleOrDefault();
                ProtocolLog protocolLog = new ProtocolLog()
                {
                    Year             = entity.DocumentUnit.Year,
                    Number           = entity.DocumentUnit.Number,
                    LogDate          = fascicleLog.RegistrationDate.DateTime,
                    LogType          = "FS",
                    Program          = "Private.WebAPI",
                    LogDescription   = fascicleLog.LogDescription,
                    RegistrationUser = fascicleLog.RegistrationUser,
                    SystemComputer   = fascicleLog.SystemComputer,
                    Entity           = protocol,
                };
                protocolLog.Hash = HashGenerator.GenerateHash(string.Concat(protocolLog.RegistrationUser, "|", protocolLog.Year, "|", protocolLog.Number, "|", protocolLog.LogType, "|", protocolLog.LogDescription, "|", protocolLog.UniqueId, "|", protocolLog.Entity.UniqueId, "|", protocolLog.LogDate.ToString("yyyyMMddHHmmss")));
                _unitOfWork.Repository <ProtocolLog>().Insert(protocolLog);
            }

            if (entity.DocumentUnit.Environment == (int)DSWEnvironmentType.Resolution)
            {
                Resolution    resolution    = _unitOfWork.Repository <Resolution>().GetByUniqueId(entity.DocumentUnit.UniqueId).SingleOrDefault();
                ResolutionLog resolutionLog = new ResolutionLog()
                {
                    LogDate          = fascicleLog.RegistrationDate.DateTime,
                    LogType          = "FS",
                    Program          = "Private.WebAPI",
                    LogDescription   = fascicleLog.LogDescription,
                    RegistrationUser = fascicleLog.RegistrationUser,
                    SystemComputer   = fascicleLog.SystemComputer,
                    Entity           = resolution,
                };
                resolutionLog.Hash = HashGenerator.GenerateHash(string.Concat(resolutionLog.RegistrationUser, "|", resolutionLog.LogType, "|", resolutionLog.LogDescription, "|", resolutionLog.UniqueId, "|", resolutionLog.Entity.UniqueId, "|", resolutionLog.LogDate.ToString("yyyyMMddHHmmss")));
                _unitOfWork.Repository <ResolutionLog>().Insert(resolutionLog);
            }

            if (entity.DocumentUnit.Environment == (int)DSWEnvironmentType.DocumentSeries)
            {
                DocumentSeriesItem    documentSeriesItem    = _unitOfWork.Repository <DocumentSeriesItem>().GetByUniqueId(entity.DocumentUnit.UniqueId).SingleOrDefault();
                DocumentSeriesItemLog documentSeriesItemLog = new DocumentSeriesItemLog()
                {
                    LogDate          = fascicleLog.RegistrationDate.DateTime,
                    LogType          = "FS",
                    Program          = "Private.WebAPI",
                    LogDescription   = fascicleLog.LogDescription,
                    RegistrationUser = fascicleLog.RegistrationUser,
                    SystemComputer   = fascicleLog.SystemComputer,
                    Entity           = documentSeriesItem,
                };
                documentSeriesItemLog.Hash = HashGenerator.GenerateHash(string.Concat(documentSeriesItemLog.RegistrationUser, "|", documentSeriesItemLog.LogType, "|", documentSeriesItemLog.LogDescription, "|", documentSeriesItemLog.UniqueId, "|", documentSeriesItemLog.Entity.UniqueId, "|", documentSeriesItemLog.LogDate.ToString("yyyyMMddHHmmss")));
                _unitOfWork.Repository <DocumentSeriesItemLog>().Insert(documentSeriesItemLog);
            }

            if (entity.DocumentUnit.Environment >= 100)
            {
                UDSRepository uDSRepository = _unitOfWork.Repository <UDSRepository>().GetByIdDocumentUnit(entity.DocumentUnit.UniqueId);
                UDSLog        log           = new UDSLog()
                {
                    LogType          = UDSLogType.Delete,
                    LogDescription   = fascicleLog.LogDescription,
                    SystemComputer   = string.IsNullOrEmpty(fascicleLog.SystemComputer) ? Environment.MachineName : fascicleLog.SystemComputer,
                    Entity           = uDSRepository,
                    RegistrationDate = fascicleLog.RegistrationDate.DateTime,
                    RegistrationUser = fascicleLog.RegistrationUser,
                    IdUDS            = entity.DocumentUnit.UniqueId,
                    Environment      = entity.DocumentUnit.Environment,
                };
                log.Hash = HashGenerator.GenerateHash(string.Concat(log.RegistrationUser, "|", log.LogType, "|", log.LogDescription, "|", log.UniqueId, "|", log.IdUDS, "|", log.RegistrationDate.ToString("yyyyMMddHHmmss")));
                _unitOfWork.Repository <UDSLog>().Insert(log);
            }
        }