Esempio n. 1
0
 private static void PreSave(long userId, ref Menu toSave, Enumerations.ActionMode action)
 {
     if (action == Enumerations.ActionMode.Add)
     {
         //toSave.Branch = BlBranch.LoadSingle(userId, toSave.Branch.Id);
     }
 }
Esempio n. 2
0
 private void PreSave(long userId, ref Role toSave, Enumerations.ActionMode action)
 {
     if (toSave.ParentRole != null)
     {
         toSave.ParentRole = LoadSingle(userId, toSave.ParentRole.Id);
     }
 }
Esempio n. 3
0
        private void PreSave(long userId, ref User toSave, Enumerations.ActionMode action, string userRoles = "")
        {
            if (action == Enumerations.ActionMode.Add)
            {
                var defaultPassword = BlCode.LoadSingle(userId, "_System", "DefaultPassword").Value1;
                toSave.Password           = Cryptography.ComputeToHash(defaultPassword);
                toSave.MustChangePassword = true;
                toSave.EntryDate          = BlCommon.GetServerDateTime();
                toSave.LastPasswordUpdate = toSave.EntryDate;
                //toSave.Branch = BlBranch.LoadSingle(userId, toSave.Branch.Id);
            }
            else if (action == Enumerations.ActionMode.Edit)
            {
            }
            toSave.EnteringUserId = userId;
            toSave.Entity         = BlEntity.LoadSingle(userId, toSave.Pin);
            if (CheckEmpty.String(userRoles) != "")
            {
                if (toSave.Roles == null)
                {
                    toSave.Roles = new List <Role>();
                }

                toSave.Roles.Clear();
                foreach (var roleId in userRoles.Split(','))
                {
                    toSave.Roles.Add(BlRole.LoadSingle(userId, Convert.ToInt64(roleId)));
                }
            }
        }
Esempio n. 4
0
 private static void PreSave(long userId, ref Entity toSave, Enumerations.ActionMode action)
 {
     if (action == Enumerations.ActionMode.Add)
     {
         toSave.EntryDate = BlCommon.GetServerDateTime();
     }
     toSave.UserId = userId;
 }
Esempio n. 5
0
        private static void PreSave(long userId, ref Document toSave, Enumerations.ActionMode action)
        {
            if (action == Enumerations.ActionMode.Add)
            {
                //Save physical file under specific location
                var file = toSave.File;
                toSave.Path = SavePhysicalFile(userId, ref file, toSave.Name, toSave.Reference);

                toSave.EntryDate = BlCommon.GetServerDateTime();
            }
            toSave.UserId = userId;
        }
Esempio n. 6
0
        private static void PreSave(long userId, ref Xtra toSave, Enumerations.ActionMode action)
        {
            var user = BlUser.LoadSingle(userId);

            if (action == Enumerations.ActionMode.Add)
            {
                //Check if previously exists
                if (LoadSingle(userId, toSave.Object, toSave.Id, toSave.Property) != null)
                {
                    throw new BusinessException("AlreadyExists1", BlDescription.GetDescription(Enumerations.DescriptionResources.Language, "lblProperty", user.LanguageId));
                }
            }
        }
Esempio n. 7
0
 private static void PreSave(long userId, ref Comment toSave, Enumerations.ActionMode action)
 {
     if (action == Enumerations.ActionMode.Add)
     {
         toSave.EntryDate = BlCommon.GetServerDateTime();
     }
     else
     {
         var oldComment = LoadSingle(userId, toSave.Id);
         oldComment.Text = toSave.Text;
         toSave          = oldComment;
     }
     toSave.UserId = userId;
 }
Esempio n. 8
0
        private void PreSave(long userId, ref Permission toSave, Enumerations.ActionMode action, string roles = "")
        {
            if (action == Enumerations.ActionMode.Add)
            {
                toSave.Module    = BlModule.LoadSingle(userId, toSave.Module.Id);
                toSave.EntryDate = BlCommon.GetServerDateTime();
            }
            toSave.UserId = userId;

            if (CheckEmpty.String(roles) != "")
            {
                toSave.Roles.Clear();
                foreach (var roleId in roles.Split(','))
                {
                    toSave.Roles.Add(BlRole.LoadSingle(userId, Convert.ToInt64(roleId)));
                }
            }
        }
Esempio n. 9
0
        /// <summary>
        /// Removes all previous fields and insert the given field
        /// </summary>
        /// <returns>The current list of <see cref="IshFields"/>.</returns>
        public IshFields AddOrUpdateField(IshField ishField, Enumerations.ActionMode actionMode)
        {
            switch (actionMode)
            {
            // Remove all value types to avoid ambiguity, no preference of element over value, so last one wins
            case Enumerations.ActionMode.Create:
            case Enumerations.ActionMode.Update:
                RemoveField(ishField.Name, ishField.Level, Enumerations.ValueType.All);
                break;

            case Enumerations.ActionMode.Find:
            case Enumerations.ActionMode.Search:
            case Enumerations.ActionMode.Read:
            default:
                RemoveField(ishField);
                break;
            }
            AddField(ishField);
            return(this);
        }
Esempio n. 10
0
        private static void PreSave(long userId, ref Employee toSave, Enumerations.ActionMode action)
        {
            if (action == Enumerations.ActionMode.Add)
            {
                toSave.EntryDate        = BlCommon.GetServerDateTime();
                toSave.Entity.EntryDate = toSave.EntryDate;
                toSave.Entity.UserId    = toSave.UserId;
                toSave.Entity.Status    = toSave.Status;
            }
            else if (action == Enumerations.ActionMode.Edit)
            {
                //toSave.Entity = BlEntity.LoadSingle(userId, toSave.Entity.Pin);
                if (toSave.Entity.Status == "S")
                {
                    //TODO:Check no goods are related to this employee
                }
            }
            toSave.Entity.NameIndex  = NameIndex.GetNameIndex(userId, toSave.Entity.FirstName, toSave.Entity.FamilyName, toSave.Entity.FatherName);
            toSave.Entity.NameIndex += NameIndex.GetNameIndex(userId, toSave.Entity.ArFirstName, toSave.Entity.ArFamilyName, toSave.Entity.ArFatherName);

            BlArDict.SetArabicDict(userId, toSave.Entity.FirstName, toSave.Entity.ArFirstName);
            BlArDict.SetArabicDict(userId, toSave.Entity.FatherName, toSave.Entity.ArFatherName);
            BlArDict.SetArabicDict(userId, toSave.Entity.FamilyName, toSave.Entity.ArFamilyName);
        }
Esempio n. 11
0
 /// <summary>
 /// Correctly named overload of ToIshMetadataFields(...). Allows tuning in the future.
 /// </summary>
 public IshFields ToIshRequiredCurrentMetadataFields(Enumerations.ISHType[] ishTypes, IshFields ishFields, Enumerations.ActionMode actionMode)
 {
     return(ToIshMetadataFields(ishTypes, ishFields, actionMode));
 }
Esempio n. 12
0
        /// <summary>
        /// Metadata write operations will be duplicated and cleared client side.
        /// Unallowed fields for write operations (IshFieldDefinition.AllowOnCreate/AllowOnUpdate) will be stripped with a Debug log message.
        /// </summary>
        /// <remarks>Logs debug entry for unknown combinations of ishTypes, ishField (name, level), mandatory, multi-value,... entries - will not throw.</remarks>
        /// <param name="ishTypes">Given ISHTypes (like ISHMasterDoc, ISHLibrary, ISHConfiguration,...) to verify/alter the IshFields for</param>
        /// <param name="ishFields">Incoming IshFields entries will be transformed to matching and allowed IshMetadataField entries</param>
        /// <param name="actionMode">MetadataFields only has value for write operations like Create, Update,...</param>
        public IshFields ToIshMetadataFields(Enumerations.ISHType[] ishTypes, IshFields ishFields, Enumerations.ActionMode actionMode)
        {
            IshFields metadataFields = new IshFields();

            foreach (Enumerations.ISHType ishType in ishTypes)
            {
                foreach (IshField ishField in ishFields.Fields())
                {
                    var key = Enumerations.Key(ishType, ishField.Level, ishField.Name);
                    // Any unknown field will be skipped, unless strict is Off
                    if (!_ishTypeFieldDefinitions.ContainsKey(key))
                    {
                        switch (_strictMetadataPreference)
                        {
                        case Enumerations.StrictMetadataPreference.SilentlyContinue:
                            _logger.WriteDebug($"ToIshMetadataFields skipping unknown ishType[{ishType}] level[{ishField.Level}] name[{ishField.Name}] valueType[{ishField.ValueType}]");
                            break;

                        case Enumerations.StrictMetadataPreference.Continue:
                            _logger.WriteVerbose($"ToIshMetadataFields skipping unknown ishType[{ishType}] level[{ishField.Level}] name[{ishField.Name}] valueType[{ishField.ValueType}]");
                            break;

                        case Enumerations.StrictMetadataPreference.Off:
                            metadataFields.AddOrUpdateField(ishField.ToMetadataField(), actionMode);
                            break;
                        }
                        continue; // move to next ishField
                    }
                    // Known field, however could be not allowed for current action
                    switch (actionMode)
                    {
                    case Enumerations.ActionMode.Create:
                        if (!_ishTypeFieldDefinitions[key].AllowOnCreate)
                        {
                            switch (_strictMetadataPreference)
                            {
                            case Enumerations.StrictMetadataPreference.Continue:
                                _logger.WriteVerbose($"ToIshMetadataFields AllowOnCreate removed ishType[{ishType}] level[{ishField.Level}] name[{ishField.Name}] valueType[{ishField.ValueType}]");
                                break;
                            }
                        }
                        else
                        {
                            switch (_strictMetadataPreference)
                            {
                            case Enumerations.StrictMetadataPreference.SilentlyContinue:
                            case Enumerations.StrictMetadataPreference.Continue:
                                // Doing an Add, as a later RemoveDuplicateFields can be smarter to keep the 'best' metadata field
                                metadataFields.AddField(ishField.ToMetadataField());
                                break;

                            case Enumerations.StrictMetadataPreference.Off:
                                // Doing an AddOrUpdate (Replace), so only one ValueType is left to avoid ambiguity on a Create/Update API call
                                metadataFields.AddOrUpdateField(ishField.ToMetadataField(), actionMode);
                                break;
                            }
                        }
                        break;

                    case Enumerations.ActionMode.Update:
                        if (!_ishTypeFieldDefinitions[key].AllowOnUpdate)
                        {
                            switch (_strictMetadataPreference)
                            {
                            case Enumerations.StrictMetadataPreference.Continue:
                                _logger.WriteVerbose($"ToIshMetadataFields AllowOnUpdate removed ishType[{ishType}] level[{ishField.Level}] name[{ishField.Name}]");
                                break;
                            }
                        }
                        else
                        {
                            switch (_strictMetadataPreference)
                            {
                            case Enumerations.StrictMetadataPreference.SilentlyContinue:
                            case Enumerations.StrictMetadataPreference.Continue:
                                // Doing an Add, as a later RemoveDuplicateFields can be smarter to keep the 'best' metadata field
                                metadataFields.AddField(ishField.ToMetadataField());
                                break;

                            case Enumerations.StrictMetadataPreference.Off:
                                // Doing an AddOrUpdate (Replace), so only one ValueType is left to avoid ambiguity on a Create/Update API call
                                metadataFields.AddOrUpdateField(ishField.ToMetadataField(), actionMode);
                                break;
                            }
                            //TODO [Should] IshTypeFieldSetup - Potential conflict if ishField having multiple ishvaluetype have conflicting entries for id/element/value
                            // 1. For IshBaseline the name field is a controlled field, so FISHDOCUMENTRELEASE linked to DDOCUMENTRELEASE.
                            //    Specifying the label FISHDOCUMENTRELEASE overrules the element name, because you are renaming
                            // 2. For IshDocumentObj the author field is a controlled field, so FAUTHOR linked to USER
                            //    Specifying the label "Admin" is less accurate than the element name "VUSERADMIN"
                            // Two cases to illustrate that is not easy to fix. Workaround is to do Set-* cmdlets by -Id and -Metadata instead of -IshObject holding the new values
                            // ==> For now solved by passing ActionMode to IshFields.AddOrUpdateField where for Create/Update all ValueTypes are removed, last one wins
                        }
                        break;

                    default:
                        _logger.WriteDebug($"ToIshMetadataFields called for actionMode[{actionMode}], skipping");
                        break;
                    }
                }
            }

            switch (_strictMetadataPreference)
            {
            case Enumerations.StrictMetadataPreference.SilentlyContinue:
                _logger.WriteDebug($"Removing duplicate IshField entries");
                metadataFields = RemoveDuplicateFields(metadataFields);
                break;

            case Enumerations.StrictMetadataPreference.Continue:
                _logger.WriteVerbose($"Removing duplicate IshField entries");
                metadataFields = RemoveDuplicateFields(metadataFields);
                break;

            case Enumerations.StrictMetadataPreference.Off:
                // not removing duplicate entries potentially causing errors like: [-105007] The field "FISHUSERLANGUAGE" can only be specified once on level "None". [105007;FieldAlreadySpecified]
                break;
            }
            return(metadataFields);
        }
Esempio n. 13
0
        /// <summary>
        /// Requested metadata fields will be duplicated and enriched to cater our Public Objects initilization.
        /// The minimal fields (IsDescriptive) will be added to allow initialization of the various IshObject types for all ValueTypes.
        /// Unallowed fields for read operations (IshFieldDefinition.AllowOnRead) will be stripped with a Debug log message.
        /// </summary>
        /// <remarks>Logs debug entry for unknown combinations of ishTypes and ishField (name, level) entries - will not throw.</remarks>
        /// <param name="ishTypes">Given ISHTypes (like ISHMasterDoc, ISHLibrary, ISHConfiguration,...) to verify/alter the IshFields for</param>
        /// <param name="ishFields">Incoming IshFields entries will be transformed to matching and allowed IshRequestedMetadataField entries</param>
        /// <param name="actionMode">RequestedMetadataFields only has value for read operations like Read, Find, Search,...</param>
        public IshFields ToIshRequestedMetadataFields(Enumerations.ISHType[] ishTypes, IshFields ishFields, Enumerations.ActionMode actionMode)
        {
            IshFields requestedMetadataFields = new IshFields();

            foreach (Enumerations.ISHType ishType in ishTypes)
            {
                // Check incoming IshField with IshTypeFieldDefinitions
                foreach (IshField ishField in ishFields.Fields())
                {
                    var key = Enumerations.Key(ishType, ishField.Level, ishField.Name);
                    if (!_ishTypeFieldDefinitions.ContainsKey(key))
                    {
                        switch (_strictMetadataPreference)
                        {
                        case Enumerations.StrictMetadataPreference.SilentlyContinue:
                            _logger.WriteDebug($"ToIshRequestedMetadataFields skipping unknown ishType[{ishType}] level[{ishField.Level}] name[{ishField.Name}] valueType[{ishField.ValueType}]");
                            break;

                        case Enumerations.StrictMetadataPreference.Continue:
                            _logger.WriteVerbose($"ToIshRequestedMetadataFields skipping unknown ishType[{ishType}] level[{ishField.Level}] name[{ishField.Name}] valueType[{ishField.ValueType}]");
                            break;

                        case Enumerations.StrictMetadataPreference.Off:
                            requestedMetadataFields.AddField(ishField.ToRequestedMetadataField());
                            break;
                        }
                        continue; // move to next ishField
                    }
                    switch (actionMode)
                    {
                    case Enumerations.ActionMode.Read:
                    case Enumerations.ActionMode.Find:
                        if (!_ishTypeFieldDefinitions[key].AllowOnRead)
                        {
                            switch (_strictMetadataPreference)
                            {
                            case Enumerations.StrictMetadataPreference.Continue:
                                _logger.WriteVerbose($"ToIshRequestedMetadataFields AllowOnRead removed ishType[{ishType}] level[{ishField.Level}] name[{ishField.Name}] valueType[{ishField.ValueType}]");
                                break;

                            case Enumerations.StrictMetadataPreference.Off:
                                requestedMetadataFields.AddField(ishField.ToRequestedMetadataField());
                                break;
                            }
                        }
                        else
                        {
                            requestedMetadataFields.AddOrUpdateField(ishField.ToRequestedMetadataField(), actionMode);
                        }
                        break;

                    case Enumerations.ActionMode.Search:
                        if (!_ishTypeFieldDefinitions[key].AllowOnSearch)
                        {
                            switch (_strictMetadataPreference)
                            {
                            case Enumerations.StrictMetadataPreference.Continue:
                                _logger.WriteVerbose($"ToIshRequestedMetadataFields AllowOnSearch removed ishType[{ishType}] level[{ishField.Level}] name[{ishField.Name}] valueType[{ishField.ValueType}]");
                                break;

                            case Enumerations.StrictMetadataPreference.Off:
                                requestedMetadataFields.AddField(ishField.ToRequestedMetadataField());
                                break;
                            }
                        }
                        else
                        {
                            requestedMetadataFields.AddOrUpdateField(ishField.ToRequestedMetadataField(), actionMode);
                        }
                        break;

                    default:
                        _logger.WriteDebug($"ToIshRequestedMetadataFields called for actionMode[{actionMode}], skipping");
                        break;
                    }
                }
            }
            //Add IsDescriptive fields for the incoming IshType to allow basic descriptive/minimal object initialization
            requestedMetadataFields = AddDescriptiveFields(ishTypes, requestedMetadataFields, actionMode);
            //TODO [Should] Merges in IsDescriptive for all ValueTypes (for LOV/Card)... we cannot do IMetadataBinding fields yet. Server-side they are retrieved anyway, so the only penalty is xml transfer size.
            return(requestedMetadataFields);
        }
Esempio n. 14
0
 /// <summary>
 /// Reverse lookup for all fields that are marked descriptive for the incoming ishTypes; then add them to ishFields.
 /// </summary>
 private IshFields AddDescriptiveFields(Enumerations.ISHType[] ishTypes, IshFields ishFields, Enumerations.ActionMode actionMode)
 {
     foreach (Enumerations.ISHType ishType in ishTypes)
     {
         foreach (var ishTypeFieldDefinition in _ishTypeFieldDefinitions.Values.Where(d => d.ISHType == ishType && d.IsDescriptive == true))
         {
             //TODO [Could] IshTypeFieldSetup adding descriptive fields potentially has an issue with removing to many ValueType entries
             ishFields.AddOrUpdateField(new IshRequestedMetadataField(ishTypeFieldDefinition.Name, ishTypeFieldDefinition.Level, Enumerations.ValueType.Value), Enumerations.ActionMode.Read);
             if (ishTypeFieldDefinition.DataType == Enumerations.DataType.ISHLov || ishTypeFieldDefinition.DataType == Enumerations.DataType.ISHType)
             {
                 ishFields.AddOrUpdateField(new IshRequestedMetadataField(ishTypeFieldDefinition.Name, ishTypeFieldDefinition.Level, Enumerations.ValueType.Element), Enumerations.ActionMode.Read);
             }
         }
     }
     return(ishFields);
 }
Esempio n. 15
0
 private void PreSave(long userId, ref Help toSave, Enumerations.ActionMode action)
 {
 }