コード例 #1
0
        public void LoadReferenceData(string parentId, MixEnums.MixAttributeSetDataType parentType,
                                      MixCmsContext _context = null, IDbContextTransaction _transaction = null)
        {
            var refFields = Values.Where(m => m.DataType == MixEnums.MixDataType.Reference).OrderBy(v => v.Priority).ToList();

            foreach (var item in refFields)
            {
                item.Field = item.Field ?? MixAttributeFields.ReadViewModel.Repository.GetSingleModel(m => m.Id == item.AttributeFieldId
                                                                                                      , _context, _transaction).Data;
                Expression <Func <MixRelatedAttributeData, bool> > predicate = model =>
                                                                               (model.AttributeSetId == item.Field.ReferenceId) &&
                                                                               (model.ParentId == parentId && model.ParentType == parentType.ToString()) &&
                                                                               model.Specificulture == Specificulture
                ;
                var getData = MixRelatedAttributeDatas.NavigationViewModel.Repository.GetModelListBy(predicate, _context, _transaction);

                JArray arr = new JArray();

                foreach (var nav in getData.Data.OrderBy(d => d.Priority))
                {
                    nav.Data.Obj.Add(new JProperty("data", nav.Data.Obj));
                    arr.Add(nav.Data.Obj);
                }
                if (Obj.ContainsKey(item.AttributeFieldName))
                {
                    Obj[item.AttributeFieldName] = arr;
                }
                else
                {
                    Obj.Add(new JProperty(item.AttributeFieldName, arr));
                }
            }
        }
コード例 #2
0
        public static void CreateTerminalControls()
        {
            if (controls_created)
            {
                return;
            }
            controls_created = true;
            if (ComboListBox == null)
            {
                ComboListBox                        = MyAPIGateway.TerminalControls.CreateControl <IMyTerminalControlCombobox, IMyTextPanel>("Script List");
                ComboListBox.Enabled                = ControlEnabled;
                ComboListBox.Title                  = MyStringId.GetOrCompute("Channel List");
                ComboListBox.Visible                = ControlVisible;
                ComboListBox.ComboBoxContent        = (x) => GetContent(x);
                ComboListBox.SupportsMultipleBlocks = SupportsMultipleBlocks;
                ComboListBox.Setter                 = Setter;
                ComboListBox.Getter                 = (x) => Getter(x);
                MyAPIGateway.TerminalControls.AddControl <IMyTextPanel>(ComboListBox);

                var LineItem = new MyTerminalControlComboBoxItem();
                LineItem.Key   = 0;
                LineItem.Value = None;
                Obj.Add(LineItem);
                SteamIdGetter.Add(LineItem.Key, 0);
                LineGetter.Add(0, LineItem.Key);
            }
        }
コード例 #3
0
 private void AddItems()
 {
     for (var i = 0; i < _count; i++)
     {
         Obj.Add(new TreatmentType(GetRandom.Object <TreatmentTypeData>())).GetAwaiter();
     }
 }
コード例 #4
0
        public void AddTest()
        {
            var expected = Obj.Get(_data.Id).GetAwaiter().GetResult();

            Assert.IsNull(expected.Data);
            Obj.Add(new TreatmentType(_data)).GetAwaiter();
            expected = Obj.Get(_data.Id).GetAwaiter().GetResult();
            TestArePropertyValuesEqual(_data, expected.Data);
        }
コード例 #5
0
        public void AddTest()
        {
            var s = GetRandom.String();

            Obj.AddRange(GetRandom.Strings());
            var c = Obj.Count;

            Obj.Add(s);
            TestDoOnChange("Add", s, null, 0);
            Assert.AreEqual(c + 1, Obj.Count);
        }
コード例 #6
0
        public void IndexOfTest()
        {
            AddTest();
            var s = GetRandom.String();

            Assert.AreEqual(-1, Obj.IndexOf(s));
            Obj.Add(s);
            ClearDoOnChanged();
            Assert.AreEqual(Obj.Count - 1, Obj.IndexOf(s));
            TestDoOnChange();
        }
コード例 #7
0
        public void ContainsTest()
        {
            AddTest();
            var s = GetRandom.String();

            Assert.IsFalse(Obj.Contains(s));
            Obj.Add(s);
            ClearDoOnChanged();
            Assert.IsTrue(Obj.Contains(s));
            TestDoOnChange();
        }
コード例 #8
0
        public void GetTest()
        {
            var s1 = GetRandom.String();
            var s2 = s1 + GetRandom.String();

            AddTest();
            Obj.Insert(0, s1);
            Obj.Add(s2);
            Assert.AreEqual(s1, Obj.Get(0));
            Assert.AreEqual(s2, Obj.Get(Obj.Count - 1));
            Assert.AreEqual(null, Obj.Get(Obj.Count));
        }
コード例 #9
0
        public static void AddLineItem(MyStringId Item, ulong steamid)
        {
            if (LineGetter.ContainsKey(steamid))
            {
                return;
            }
            var LineItem = new MyTerminalControlComboBoxItem();

            LineItem.Key   = Obj.Count;
            LineItem.Value = Item;
            Obj.Add(LineItem);
            SteamIdGetter.Add(LineItem.Key, steamid);
            LineGetter.Add(steamid, LineItem.Key);
        }
コード例 #10
0
        public void FindTest()
        {
            var           s    = GetRandom.String();
            Func <string> test =
                () => Obj.Find(o => o.StartsWith(s.Substring(0, 10)));

            AddTest();
            var a = test();

            Assert.IsNull(a);
            Obj.Add(s);
            a = test();
            Assert.AreEqual(s, a);
        }
コード例 #11
0
        public void FindLastIndexTest()
        {
            var        s1   = GetRandom.String();
            var        s2   = s1 + GetRandom.String();
            Func <int> test =
                () => Obj.FindLastIndex(o => o.StartsWith(s1.Substring(0, 10)));

            AddTest();
            var a = test();

            Assert.AreEqual(-1, a);
            Obj.Insert(0, s1);
            Obj.Add(s2);
            a = test();
            Assert.AreEqual(Obj.Count - 1, a);
        }
コード例 #12
0
        public void FindLastTest()
        {
            var           s1   = GetRandom.String();
            var           s2   = s1 + GetRandom.String();
            Func <string> test =
                () => Obj.FindLast(o => o.StartsWith(s1.Substring(0, 10)));

            AddTest();
            var a = test();

            Assert.IsNull(a);
            Obj.Insert(0, s1);
            Obj.Add(s2);
            a = test();
            Assert.AreEqual(s2, a);
        }
コード例 #13
0
        public void FindAllTest()
        {
            var s1 = GetRandom.String();
            var s2 = s1 + GetRandom.String();

            AddTest();
            Func <Archetypes <string> > test =
                () => Obj.FindAll(o => o.StartsWith(s1.Substring(0, 10)));
            var a = test();

            Assert.AreEqual(0, a.Count);
            Obj.Insert(0, s1);
            Obj.Add(s2);
            a = test();
            Assert.AreEqual(2, a.Count);
            Assert.AreEqual(s1, a[0]);
            Assert.AreEqual(s2, a[1]);
        }
コード例 #14
0
ファイル: ScriptManager.cs プロジェクト: boodie/Opensim2
        public void SetScript(uint localID, UUID itemID, InstanceData id)
        {
            lock (scriptLock)
            {
                // Create object if it doesn't exist
                if (Scripts.ContainsKey(localID) == false)
                {
                    Scripts.Add(localID, new Dictionary <UUID, InstanceData>());
                }

                // Delete script if it exists
                Dictionary <UUID, InstanceData> Obj;
                Scripts.TryGetValue(localID, out Obj);
                if (Obj.ContainsKey(itemID) == true)
                {
                    Obj.Remove(itemID);
                }

                // Add to object
                Obj.Add(itemID, id);
            }
        }
コード例 #15
0
ファイル: ScriptManager.cs プロジェクト: boodie/Opensim2
        private void MemAddScript(ScriptStructure script)
        {
            lock (scriptLock)
            {
                // Create object if it doesn't exist
                if (!Scripts.ContainsKey(script.LocalID))
                {
                    Scripts.Add(script.LocalID, new Dictionary <UUID, ScriptStructure>());
                }

                // Delete script if it exists
                Dictionary <UUID, ScriptStructure> Obj;
                if (Scripts.TryGetValue(script.LocalID, out Obj))
                {
                    if (Obj.ContainsKey(script.ItemID) == true)
                    {
                        Obj.Remove(script.ItemID);
                    }
                }

                // Add to object
                Obj.Add(script.ItemID, script);
            }
        }
コード例 #16
0
        public override MixAttributeSetData ParseModel(MixCmsContext _context = null, IDbContextTransaction _transaction = null)
        {
            if (string.IsNullOrEmpty(Id))
            {
                Id = Guid.NewGuid().ToString();
                CreatedDateTime = DateTime.UtcNow;
                Priority        = Repository.Count(m => m.AttributeSetName == AttributeSetName && m.Specificulture == Specificulture, _context, _transaction).Data + 1;
            }

            if (string.IsNullOrEmpty(AttributeSetName))
            {
                AttributeSetName = _context.MixAttributeSet.First(m => m.Id == AttributeSetId)?.Name;
            }
            if (AttributeSetId == 0)
            {
                AttributeSetId = _context.MixAttributeSet.First(m => m.Name == AttributeSetName)?.Id ?? 0;
            }
            Values = Values ?? MixAttributeSetValues.UpdateViewModel
                     .Repository.GetModelListBy(a => a.DataId == Id && a.Specificulture == Specificulture, _context, _transaction).Data.OrderBy(a => a.Priority).ToList();
            Fields = MixAttributeFields.UpdateViewModel.Repository.GetModelListBy(f => f.AttributeSetId == AttributeSetId, _context, _transaction).Data;

            foreach (var field in Fields.OrderBy(f => f.Priority))
            {
                var val = Values.FirstOrDefault(v => v.AttributeFieldId == field.Id);
                if (val == null)
                {
                    val = new MixAttributeSetValues.UpdateViewModel(
                        new MixAttributeSetValue()
                    {
                        AttributeFieldId   = field.Id,
                        AttributeFieldName = field.Name,
                    }
                        , _context, _transaction)
                    {
                        StringValue = field.DefaultValue,
                        Priority    = field.Priority,
                        Field       = field
                    };
                    Values.Add(val);
                }
                val.Priority         = field.Priority;
                val.AttributeSetName = AttributeSetName;
                if (Obj[val.AttributeFieldName] != null)
                {
                    if (val.Field.DataType == MixEnums.MixDataType.Reference)
                    {
                        var arr = Obj[val.AttributeFieldName].Value <JArray>();
                        if (arr != null)
                        {
                            foreach (JObject objData in arr)
                            {
                                string id = objData["id"]?.Value <string>();
                                // if have id => update data, else add new
                                if (!string.IsNullOrEmpty(id))
                                {
                                    var getData = Repository.GetSingleModel(m => m.Id == id && m.Specificulture == Specificulture, _context, _transaction);
                                    if (getData.IsSucceed)
                                    {
                                        getData.Data.Obj = objData["obj"].Value <JObject>();
                                        RefData.Add(getData.Data);
                                    }
                                }
                                else
                                {
                                    RefData.Add(new FormPortalViewModel()
                                    {
                                        Specificulture = Specificulture,
                                        AttributeSetId = field.ReferenceId.Value,
                                        Obj            = objData["obj"].Value <JObject>()
                                    });
                                }
                            }
                        }
                    }
                    else
                    {
                        ParseModelValue(Obj[val.AttributeFieldName], val);
                    }
                }
                else
                {
                    Obj.Add(ParseValue(val, _context, _transaction));
                }
            }

            // Save Edm html
            var getAttrSet = Mix.Cms.Lib.ViewModels.MixAttributeSets.ReadViewModel.Repository.GetSingleModel(m => m.Name == AttributeSetName, _context, _transaction);
            var getEdm     = Lib.ViewModels.MixTemplates.UpdateViewModel.GetTemplateByPath(getAttrSet.Data.EdmTemplate, Specificulture);
            var edmField   = Values.FirstOrDefault(f => f.AttributeFieldName == "edm");

            if (edmField != null && getEdm.IsSucceed && !string.IsNullOrEmpty(getEdm.Data.Content))
            {
                string body = getEdm.Data.Content;
                foreach (var prop in Obj.Properties())
                {
                    body = body.Replace($"[[{prop.Name}]]", Obj[prop.Name].Value <string>());
                }
                var edmFile = new FileViewModel()
                {
                    Content    = body,
                    Extension  = ".html",
                    FileFolder = "edms",
                    Filename   = $"{getAttrSet.Data.EdmSubject}-{Id}"
                };
                if (FileRepository.Instance.SaveWebFile(edmFile))
                {
                    Obj["edm"]           = edmFile.WebPath;
                    edmField.StringValue = edmFile.WebPath;
                }
            }
            //End save edm
            return(base.ParseModel(_context, _transaction));;
        }
コード例 #17
0
        public override MixAttributeSetData ParseModel(MixCmsContext _context = null, IDbContextTransaction _transaction = null)
        {
            if (string.IsNullOrEmpty(Id))
            {
                Id = Guid.NewGuid().ToString();
                CreatedDateTime = DateTime.UtcNow;
                Priority        = Repository.Count(m => m.AttributeSetName == AttributeSetName && m.Specificulture == Specificulture, _context, _transaction).Data + 1;
            }

            if (string.IsNullOrEmpty(AttributeSetName))
            {
                AttributeSetName = _context.MixAttributeSet.First(m => m.Id == AttributeSetId)?.Name;
            }
            if (AttributeSetId == 0)
            {
                AttributeSetId = _context.MixAttributeSet.First(m => m.Name == AttributeSetName)?.Id ?? 0;
            }
            Values ??= MixAttributeSetValues.UpdateViewModel
            .Repository.GetModelListBy(a => a.DataId == Id && a.Specificulture == Specificulture
                                       , _context, _transaction)
            .Data.OrderBy(a => a.Priority).ToList();

            Fields ??= MixAttributeFields.UpdateViewModel.Repository.GetModelListBy(
                f => f.AttributeSetId == AttributeSetId,
                _context, _transaction).Data;

            foreach (var field in Fields.OrderBy(f => f.Priority))
            {
                var val = Values.FirstOrDefault(v => v.AttributeFieldId == field.Id);
                if (val == null)
                {
                    val = new MixAttributeSetValues.UpdateViewModel(
                        new MixAttributeSetValue()
                    {
                        AttributeFieldId   = field.Id,
                        AttributeFieldName = field.Name,
                    }
                        , _context, _transaction)
                    {
                        StringValue = field.DefaultValue,
                        Priority    = field.Priority,
                        Field       = field
                    };
                    Values.Add(val);
                }
                else
                {
                    val.LastModified = DateTime.UtcNow;
                }
                val.CreatedBy        = CreatedBy;
                val.Status           = Status;
                val.Priority         = field.Priority;
                val.AttributeSetName = AttributeSetName;
                if (Obj[val.AttributeFieldName] != null)
                {
                    if (val.Field.DataType == MixDataType.Reference)
                    {
                        var arr = Obj[val.AttributeFieldName].Value <JArray>();
                        if (arr != null)
                        {
                            foreach (JObject objData in arr)
                            {
                                string id = objData["id"]?.Value <string>();
                                // if have id => update data, else add new
                                if (!string.IsNullOrEmpty(id))
                                {
                                    var getData = Repository.GetSingleModel(
                                        m => m.Id == id && m.Specificulture == Specificulture,
                                        _context, _transaction);
                                    if (getData.IsSucceed)
                                    {
                                        getData.Data.Obj = objData["obj"].Value <JObject>();
                                        RefData.Add(getData.Data);
                                    }
                                }
                                else
                                {
                                    RefData.Add(new ImportViewModel()
                                    {
                                        Specificulture = Specificulture,
                                        AttributeSetId = field.ReferenceId.Value,
                                        Obj            = objData["obj"].Value <JObject>()
                                    });
                                }
                            }
                        }
                    }
                    else
                    {
                        val.ToModelValue(Obj[val.AttributeFieldName]);
                    }
                }
                else
                {
                    Obj.Add(val.Model.ToJProperty(_context, _transaction));
                }
            }

            return(base.ParseModel(_context, _transaction));;
        }