Ejemplo n.º 1
0
        public static FascicleLog CreateLog(Fascicle fascicle, FascicleLogType logType, string logDescription, string registrationUser)
        {
            FascicleLog fascicleLog = new FascicleLog()
            {
                LogType          = logType,
                LogDescription   = logDescription,
                SystemComputer   = Environment.MachineName,
                RegistrationDate = DateTimeOffset.UtcNow,
                RegistrationUser = registrationUser,
                Entity           = fascicle
            };

            fascicleLog.Hash = HashGenerator.GenerateHash($"{fascicleLog.RegistrationUser}|{fascicleLog.LogType}|{fascicleLog.LogDescription}|{fascicleLog.UniqueId}|{fascicle.UniqueId}|{fascicleLog.RegistrationDate:yyyyMMddHHmmss}");
            return(fascicleLog);
        }
        protected override FascicleDocumentUnit BeforeCreate(FascicleDocumentUnit entity)
        {
            short?idCategory = null;

            if (entity.Fascicle != null)
            {
                entity.Fascicle = _unitOfWork.Repository <Fascicle>().GetByUniqueId(entity.Fascicle.UniqueId, optimization: false);
                idCategory      = entity.Fascicle.Category.EntityShortId;
            }

            if (entity.FascicleFolder != null)
            {
                entity.FascicleFolder = _unitOfWork.Repository <FascicleFolder>().Find(entity.FascicleFolder.UniqueId);
            }

            if (entity.FascicleFolder == null && idCategory.HasValue)
            {
                entity.FascicleFolder = _unitOfWork.Repository <FascicleFolder>().GetByCategoryAndFascicle(entity.Fascicle.UniqueId, idCategory.Value, optimization: false).FirstOrDefault();
            }

            if (entity.DocumentUnit != null)
            {
                entity.DocumentUnit = _unitOfWork.Repository <DocumentUnit>().GetByIdWithCategory(entity.DocumentUnit.UniqueId).SingleOrDefault();
            }

            entity.ReferenceType = ReferenceType.Reference;
            if (entity.Fascicle.FascicleType != FascicleType.Activity)
            {
                entity = AutomaticFascicleDetection(entity);
            }

            entity.Fascicle.LastChangedDate = DateTimeOffset.UtcNow;
            FascicleLog fascicleLog = FascicleService.CreateLog(entity.Fascicle, entity.ReferenceType.Equals(ReferenceType.Fascicle) ? FascicleLogType.UDInsert : FascicleLogType.UDReferenceInsert,
                                                                string.Format("Inserimento ({0}) {1} n. {2} in fascicolo n. {3}",
                                                                              entity.ReferenceType.Equals(ReferenceType.Fascicle) ? EnumHelper.GetDescription(ReferenceType.Fascicle) : EnumHelper.GetDescription(ReferenceType.Reference),
                                                                              LogDocumentNameHelper.GetAttributeDescription(GetType()),
                                                                              entity.UniqueId,
                                                                              entity.Fascicle == null ? string.Empty : entity.Fascicle.Title), CurrentDomainUser.Account);

            _unitOfWork.Repository <FascicleLog>().Insert(fascicleLog);
            PrepareDocumentUnitLog(entity, fascicleLog);

            if (entity.Fascicle != null)
            {
                ReferenceType          referenceType = (entity.ReferenceType == ReferenceType.Fascicle) ? ReferenceType.Reference : ReferenceType.Fascicle;
                IEnumerable <Fascicle> fascicles     = AssociatedFascicles(entity.DocumentUnit, referenceType);

                if (fascicles.Any())
                {
                    IEnumerable <Fascicle> fascicleToLinks = fascicles.Where(f => (!f.FascicleLinks.Any() || !f.FascicleLinks.Any(fl => fl.FascicleLinked.UniqueId == entity.Fascicle.UniqueId)));

                    ICollection <FascicleLink> fascicleLinks = new HashSet <FascicleLink>();
                    foreach (Fascicle item in fascicleToLinks)
                    {
                        fascicleLinks.Add(new FascicleLink()
                        {
                            Fascicle         = item,
                            FascicleLinked   = entity.Fascicle,
                            FascicleLinkType = FascicleLinkType.Automatic
                        });

                        fascicleLinks.Add(new FascicleLink()
                        {
                            Fascicle         = entity.Fascicle,
                            FascicleLinked   = item,
                            FascicleLinkType = FascicleLinkType.Automatic
                        });
                    }
                    _unitOfWork.Repository <FascicleLink>().InsertRange(fascicleLinks);
                }
            }
            return(base.BeforeCreate(entity));
        }
        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);
            }
        }