Example #1
0
 public ExpectedModel[] GetModelEstimationForecast(RelatedData relatedData, ExpectedModel[] expectedModel)
 {
     for (int i = 0; i < expectedModel.Length; i++)
     {
         if (expectedModel[i].Month == 1)
         {
             expectedModel[i].ModelEstimationForecast = expectedModel[i].CoefficientOfSmoothingTheSeries
                                                        + expectedModel[i].CoefficientOfSmoothingTheTrend;
         }
         else if (expectedModel[i].Month > 1 && expectedModel[i].Month < 13)
         {
             expectedModel[i].ModelEstimationForecast = expectedModel[i - 1].CoefficientOfSmoothingTheSeries
                                                        + expectedModel[i - 1].CoefficientOfSmoothingTheTrend;
         }
         else if (expectedModel[i].Month > 51)
         {
             expectedModel[i].ModelEstimationForecast = expectedModel[i].Sum;
         }
         else
         {
             expectedModel[i].ModelEstimationForecast = (expectedModel[i - 1].CoefficientOfSmoothingTheSeries
                                                         + expectedModel[i - 1].CoefficientOfSmoothingTheTrend)
                                                        * expectedModel[i - 12].SeasoningSmoothingFactor;
         }
     }
     return(expectedModel);
 }
Example #2
0
 private void ProcessAttributeSetData(MixCmsContext context, IDbContextTransaction transaction)
 {
     AttributeSetDatas = new List <MixAttributeSetDatas.ImportViewModel>();
     // Load AttributeSet data
     foreach (var item in AttributeSets)
     {
         if (item.IsExportData)
         {
             var getData = MixAttributeSetDatas.ImportViewModel.Repository.GetModelListBy(
                 a => a.Specificulture == Specificulture && a.AttributeSetId == item.Id, context, transaction)
                           .Data?.OrderBy(a => a.Priority).ToList();
             if (getData != null)
             {
                 AttributeSetDatas.AddRange(getData);
             }
         }
     }
     // Load Related Data
     RelatedData.AddRange(Posts.Select(p => p.RelatedData));
     foreach (var item in RelatedData)
     {
         if (!AttributeSetDatas.Any(m => m.Id == item.Id))
         {
             var getData = MixAttributeSetDatas.ImportViewModel.Repository.GetSingleModel(
                 m => m.Id == item.Id, context, transaction);
             if (getData.IsSucceed)
             {
                 AttributeSetDatas.Add(getData.Data);
             }
         }
     }
 }
 private void ExportMixDatabaseData(MixCmsContext context, IDbContextTransaction transaction)
 {
     MixDatabaseDatas = new List <MixDatabaseDatas.ImportViewModel>();
     // Load MixDatabase data
     foreach (var item in MixDatabases)
     {
         if (item.IsExportData)
         {
             var getData = ViewModels.MixDatabaseDatas.ImportViewModel.Repository.GetModelListBy(
                 a => a.Specificulture == Specificulture && a.MixDatabaseId == item.Id, context, transaction)
                           .Data?.OrderBy(a => a.Priority).ToList();
             if (getData != null)
             {
                 MixDatabaseDatas.AddRange(getData);
             }
         }
     }
     // Load Related Data
     RelatedData.AddRange(Posts.Where(p => p.RelatedData != null).Select(p => p.RelatedData));
     RelatedData.AddRange(Pages.Where(p => p.RelatedData != null).Select(p => p.RelatedData));
     RelatedData.AddRange(Modules.Where(p => p.RelatedData != null).Select(p => p.RelatedData));
     foreach (var item in RelatedData)
     {
         if (!MixDatabaseDatas.Any(m => m.Id == item.Id))
         {
             var getData = ViewModels.MixDatabaseDatas.ImportViewModel.Repository.GetSingleModel(
                 m => m.Id == item.Id, context, transaction);
             if (getData.IsSucceed)
             {
                 MixDatabaseDatas.Add(getData.Data);
             }
         }
     }
 }
        /// <summary>
        /// This method called when user navigated to this page.
        /// </summary>
        /// <param name="e"></param>
        protected async override void OnNavigatedTo(NavigationEventArgs e)
        {
            this.navigationHelper.OnNavigatedTo(e);

            progressRing.IsActive = true;

            // If UserInfo is null, then initialize the helper
            if (CRMHelper.UserInfo == null)
            {
                await CRMHelper.Initialize();
            }

            // Check if there is any temporaryData
            object[] parameters = CRMHelper.temporaryData as object[];
            if (parameters.Count() != 3)
            {
                throw new Exception("SetRegardingPage takes 3 parameters, SourceRecord, RelatedData and EntityMetadataEx");
            }

            this.record           = parameters[0] as Entity;
            this.relatedData      = parameters[1] as RelatedData;
            this.entityMetadataEx = parameters[2] as EntityMetadataEx;

            // Then initialize page
            Initialize();

            progressRing.IsActive = false;
        }
Example #5
0
 public ExpectedModel[] GetModelError(RelatedData relatedData, ExpectedModel[] expectedModel)
 {
     for (int i = 0; i < expectedModel.Length; i++)
     {
         if (expectedModel[i].Month < 52)
         {
             expectedModel[i].ModelError = expectedModel[i].Sum - expectedModel[i].ModelEstimationForecast;
         }
     }
     return(expectedModel);
 }
Example #6
0
        /// <summary>
        /// This method is called when user clicks Add Existing button in Related PivotItem
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void abAddExisting_Click(object sender, RoutedEventArgs e)
        {
            // Obtain related Datafrom selected entity
            RelatedData relatedData = entityMetadataEx.RelatedEntities.
                                      Where(x => x.ObjectTypeCode == (CRMGrid.cbLookFor.SelectedItem as EntityMetadataEx).EntityMetadata.ObjectTypeCode).First();

            // Pass FormFieldObject by using temporaryData of CRMHelpre
            CRMHelper.temporaryData = new object[] { record, relatedData, CRMGrid.cbLookFor.SelectedItem as EntityMetadataEx };
            // Then navigate to SetRegardingPage
            Frame.Navigate(typeof(SetRegardingPage));
        }
        //public bool CheckRelationshipIsChanged(ChildRelationshipInfo relation)
        //{
        //    if (OriginalRelatedData.Any(x => x.KeyProperties.All(y => !RelatedData.Any(z => z.IsNewItem == false && z.KeyProperties.Any(u => u.ColumnID == y.ColumnID && u.Value == y.Value)))))
        //    {
        //        //داده ای حذف شده است
        //        return true;
        //    }
        //    if (RelatedData.Any(x => x.KeyProperties.All(y => !OriginalRelatedData.Any(z => z.KeyProperties.Any(u => u.ColumnID == y.ColumnID && u.Value == y.Value)))))
        //    {
        //        //داده ای اضافه شده است
        //        return true;
        //    }
        //    return false;
        //}

        public bool CheckRelationshipIsChanged()
        {
            foreach (var deleted in OriginalRelatedData.Where(x => !x.KeyProperties.All(y => RelatedData.Any(z => z.IsNewItem == false && z.KeyProperties.Any(u => u.ColumnID == y.ColumnID && u.Value == y.Value)))))
            {
                return(true);
            }
            foreach (var added in RelatedData.Where(x => !x.KeyProperties.All(y => OriginalRelatedData.Any(z => z.KeyProperties.Any(u => u.ColumnID == y.ColumnID && u.Value == y.Value)))))
            {
                return(true);
            }
            return(false);
        }
        /// <summary>
        /// Load/Refresh data
        /// </summary>
        /// <returns></returns>
        public async System.Threading.Tasks.Task RefreshList()
        {
            // Start progress ring until records loaded.
            progressRing.IsActive = true;

            // Set the cbLookFor, cbLookIn and searchbox disabled until views/records loaded.
            cbLookFor.IsEnabled = false;
            cbLookIn.IsEnabled  = false;
            txtSearch.IsEnabled = false;

            // Clear data.
            this.lvList.ItemsSource = null;
            // Show Search button and hide Cancel Button
            btnSearch.Visibility       = Visibility.Visible;
            btnCancelSearch.Visibility = Visibility.Collapsed;
            // Clear any search
            txtSearch.Text = "";


            // If it's regarding, then check if 1st view is selected, which is regarding view.
            if (isRegarding && cbLookIn.SelectedIndex == 0)
            {
                // Then get RelatedData and assign Id
                relatedData = CRMHelper.EntityMetadataExCollection.Where(x => x.EntityMetadata.LogicalName == ReferencedEntityLogicalName).First().RelatedEntities.Where(r => r.ReferencingEntity == (cbLookFor.SelectedItem as EntityMetadataEx).EntityMetadata.LogicalName).First();
                if (relatedData != null)
                {
                    relatedData.Id = ReferencedEntityId;
                }
            }
            else
            {
                relatedData = null;
            }

            // If lookup then obtain PrimaryFieldName
            if (isLookup)
            {
                primaryFieldName = (cbLookFor.SelectedItem as EntityMetadataEx).EntityMetadata.PrimaryNameAttribute;
            }

            // Get Records by passing necessary data.
            this.lvList.ItemsSource = await CRMHelper.RetrieveByFetchXmlForView(
                cbLookIn.SelectedItem as SavedQuery, relatedData, primaryFieldName);

            cbLookFor.IsEnabled       = true;
            cbLookIn.IsEnabled        = true;
            txtSearch.IsEnabled       = true;
            lvList.SelectionMode      = ListViewSelectionMode.Single;
            lvList.IsItemClickEnabled = true;

            //once record loaded, then stop progress ring, and enable comboboxes and search textbox.
            progressRing.IsActive = false;
        }
Example #9
0
 private void GetAdditionalData(string id, MixEnums.MixAttributeSetDataType type, MixCmsContext context, IDbContextTransaction transaction)
 {
     if (!RelatedData.Any(m => m.ParentId == id && m.ParentType == (int)type))
     {
         var getRelatedData = MixRelatedAttributeDatas.ReadViewModel.Repository.GetSingleModel(
             m => m.Specificulture == Specificulture && m.ParentType == (int)type &&
             m.ParentId == id, context, transaction);
         if (getRelatedData.IsSucceed)
         {
             RelatedData.Add(getRelatedData.Data);
         }
     }
 }
 private void ExportAdditionalData(string id, MixDatabaseParentType type, MixCmsContext context, IDbContextTransaction transaction)
 {
     if (!RelatedData.Any(m => m.ParentId == id && m.ParentType == type))
     {
         var getRelatedData = MixDatabaseDataAssociations.ImportViewModel.Repository.GetSingleModel(
             m => m.Specificulture == Specificulture && m.ParentType == type &&
             m.ParentId == id, context, transaction);
         if (getRelatedData.IsSucceed)
         {
             RelatedData.Add(getRelatedData.Data);
         }
     }
 }
        //public int SourceRelationID;
        //public int SourceEntityID;
        //public int SourceTableID;
        //public int TargetTableID;
        //public Enum_RelationshipType SourceToTargetRelationshipType;
        //public Enum_MasterRelationshipType SourceToTargetMasterRelationshipType;

        public void AddDataToChildRelationshipInfo(DP_DataRepository dataItem, bool fromDB)
        {
            dataItem.ParantChildRelationshipInfo = this;
            RelatedData.Add(dataItem);
            if (fromDB)
            {
                ProxyLibrary.DP_DataRepository orgData = new ProxyLibrary.DP_DataRepository(dataItem.TargetEntityID, dataItem.TargetEntityAlias);
                orgData.ParantChildRelationshipInfo = this;
                foreach (var item in dataItem.KeyProperties)
                {
                    orgData.AddCopyProperty(item);
                }
                OriginalRelatedData.Add(orgData);
            }
        }
Example #12
0
 public ExpectedModel[] GetErrorDeviationFromForecast(RelatedData relatedData, ExpectedModel[] expectedModel)
 {
     for (int i = 0; i < expectedModel.Length; i++)
     {
         if (expectedModel[i].Month == 1)
         {
             expectedModel[i].ErrorDeviationFromForecast = expectedModel[i].ModelError / expectedModel[i].Sum;
         }
         else if (expectedModel[i].Month < 52)
         {
             expectedModel[i].ErrorDeviationFromForecast = Math.Pow(expectedModel[i].ModelError, 2) / Math.Pow(expectedModel[i].Sum, 2);
         }
     }
     return(expectedModel);
 }
Example #13
0
 public ExpectedModel[] GetSeasoningSmoothingFactor(RelatedData relatedData, ExpectedModel[] expectedModel)
 {
     for (int i = 0; i < expectedModel.Length; i++)
     {
         if (expectedModel[i].Month < 13)
         {
             expectedModel[i].SeasoningSmoothingFactor = relatedData.A10;
         }
         else if (expectedModel[i].Month > 12)
         {
             expectedModel[i].SeasoningSmoothingFactor = relatedData.Q
                                                         * (expectedModel[i].Sum / expectedModel[i].CoefficientOfSmoothingTheSeries)
                                                         + (1 - relatedData.Q)
                                                         * expectedModel[i - 12].SeasoningSmoothingFactor;
         }
     }
     return(expectedModel);
 }
        private void ExportRelatedDatas(MixCmsContext context, IDbContextTransaction transaction)
        {
            foreach (var item in MixDatabaseDatas)
            {
                var getDataResult = MixDatabaseDataAssociations.ImportViewModel.Repository
                                    .GetModelListBy(m => m.ParentId == item.Id && m.Specificulture == item.Specificulture
                                                    , context, transaction);

                if (getDataResult.IsSucceed && getDataResult.Data.Count > 0)
                {
                    var data = getDataResult.Data.Where(m =>
                                                        MixDatabaseDatas.Any(d => d.Id == m.DataId) &&
                                                        !RelatedData.Any(r => r.ParentId == item.Id && r.DataId == m.DataId))
                               .ToList();
                    RelatedData.AddRange(data);
                }
            }
        }
        public void TestEnumerableQueryable()
        {
            var data2 = new RelatedData[]
            {
                new RelatedData {
                    DataId = 1, Name = "Related1"
                },
                new RelatedData {
                    DataId = 2, Name = "Related2"
                },
            };

            var result = DATA
                         .LeftJoin(data2.AsQueryable(), td => td.ID, a => a.DataId, (td, a) => new { td, a })
                         .Where(a => a.a != null)
                         .ToArray();

            Assert.True(result.Length == 2);
        }
Example #16
0
        private async Task <RepositoryResponse <bool> > ImportModulesAsync(string destCulture, MixCmsContext context, IDbContextTransaction transaction)
        {
            var result = new RepositoryResponse <bool>()
            {
                IsSucceed = true
            };

            foreach (var module in Modules)
            {
                var oldId = module.Id;
                if (result.IsSucceed)
                {
                    if (!context.MixModule.Any(m => m.Name == module.Name && m.Specificulture == destCulture))
                    {
                        module.Id             = context.MixModule.Max(m => m.Id) + 1;
                        module.Specificulture = destCulture;
                        if (!string.IsNullOrEmpty(module.Image))
                        {
                            module.Image = module.Image.Replace($"content/templates/{ThemeName}", $"content/templates/{MixService.GetConfig<string>("ThemeFolder", destCulture)}");
                        }
                        module.CreatedDateTime = DateTime.UtcNow;
                        var saveResult = await module.SaveModelAsync(true, context, transaction);

                        ViewModelHelper.HandleResult(saveResult, ref result);
                    }
                    // update new id to related attribute data
                    var related = RelatedData.Where(
                        m => m.ParentType == (int)MixEnums.MixAttributeSetDataType.Module && m.ParentId == oldId.ToString());
                    foreach (var r in related)
                    {
                        r.ParentId = module.Id.ToString();
                    }
                }
                else
                {
                    break;
                }
            }
            return(result);
        }
        private void GetAdditionalData(string id, MixEnums.MixAttributeSetDataType type, MixCmsContext context, IDbContextTransaction transaction)
        {
            var getRelatedData = MixRelatedAttributeDatas.ReadViewModel.Repository.GetSingleModel(
                m => m.Specificulture == Specificulture && m.ParentType == (int)type &&
                m.ParentId == id, context, transaction);

            if (getRelatedData.IsSucceed)
            {
                RelatedData.Add(getRelatedData.Data);
                var getData = MixAttributeSetDatas.ImportViewModel.Repository.GetSingleModel(
                    m => m.Specificulture == Specificulture && m.Id == getRelatedData.Data.Id);
                if (getData.IsSucceed)
                {
                    getData.Data.Fields = new List <MixAttributeFields.UpdateViewModel>();
                    foreach (var item in getData.Data.Values)
                    {
                        getData.Data.Fields.Add(item.Field);
                    }
                    AttributeSetDatas.Add(getData.Data);
                }
            }
        }
Example #18
0
        private async Task <RepositoryResponse <bool> > SaveRefDataAsync(MixAttributeSetData parent, MixCmsContext context, IDbContextTransaction transaction)
        {
            var result = new RepositoryResponse <bool>()
            {
                IsSucceed = true
            };

            foreach (var item in RefData)
            {
                if (result.IsSucceed)
                {
                    item.Specificulture = Specificulture;
                    item.ParentId       = parent.Id;
                    item.ParentType     = MixEnums.MixAttributeSetDataType.Set;
                    item.Status         = MixEnums.MixContentStatus.Published;
                    var saveRef = await item.SaveModelAsync(true, context, transaction);

                    if (saveRef.IsSucceed)
                    {
                        RelatedData.Add(new MixRelatedAttributeDatas.UpdateViewModel()
                        {
                            DataId           = saveRef.Data.Id,
                            ParentId         = Id,
                            ParentType       = MixEnums.MixAttributeSetDataType.Set,
                            AttributeSetId   = saveRef.Data.AttributeSetId,
                            AttributeSetName = saveRef.Data.AttributeSetName,
                            CreatedDateTime  = DateTime.UtcNow,
                            Specificulture   = Specificulture
                        });
                    }
                    ViewModelHelper.HandleResult(saveRef, ref result);
                }
                else
                {
                    break;
                }
            }
            return(result);
        }
Example #19
0
        /// <summary>
        /// This method is called when user clicks Add button in Related PivotItem
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private async void abRelatedAdd_Click(object sender, RoutedEventArgs e)
        {
            // Get RelatedData to create related record
            RelatedData relatedData = entityMetadataEx.RelatedEntities.Where(x => x.ReferencingEntity == (CRMGrid.cbLookFor.SelectedItem as EntityMetadataEx).EntityMetadata.LogicalName).First();

            // Create Entity instance to created record, by fulling mapped values.
            Entity targetRecord = await CRMHelper.RetrieveRecordForRelated(record, relatedData, entityMetadataEx);

            // Make id to empty for sure (not mandatory?)
            targetRecord.Id = Guid.Empty;
            // Get Related entity's EntityMetadata
            EntityMetadataEx targetEntityMetadataEx = CRMHelper.EntityMetadataExCollection.Where(x => x.EntityMetadata.LogicalName == relatedData.ReferencingEntity).First();
            // Get fields for create form
            List <FormFieldData> targetFields = await CRMHelper.RetrieveFormFields(targetEntityMetadataEx);

            // Resets all the buttons
            ResetAppBarButtonDisplay();
            // Generate parameters. As this is new record, passing null for record object.
            object[] parameters = new object[] { targetRecord, targetFields, targetEntityMetadataEx };
            CRMHelper.temporaryData = parameters;
            // Then Navigate to RecordModifyPage
            Frame.Navigate(typeof(RecordModifyPage));
        }
Example #20
0
        private async Task <RepositoryResponse <bool> > SaveRefDataAsync(MixDatabaseData parent, MixCmsContext context, IDbContextTransaction transaction)
        {
            var result = new RepositoryResponse <bool>()
            {
                IsSucceed = true
            };

            foreach (var item in RefData)
            {
                if (result.IsSucceed)
                {
                    item.Specificulture = Specificulture;
                    var saveRef = await item.SaveModelAsync(true, context, transaction);

                    if (saveRef.IsSucceed)
                    {
                        RelatedData.Add(new Lib.ViewModels.MixDatabaseDataAssociations.UpdateViewModel()
                        {
                            Id              = saveRef.Data.Id,
                            ParentId        = Id,
                            ParentType      = MixDatabaseParentType.Set,
                            MixDatabaseId   = saveRef.Data.MixDatabaseId,
                            MixDatabaseName = saveRef.Data.MixDatabaseName,
                            CreatedDateTime = DateTime.UtcNow,
                            Specificulture  = Specificulture
                        });
                    }
                    ViewModelHelper.HandleResult(saveRef, ref result);
                }
                else
                {
                    break;
                }
            }
            return(result);
        }
Example #21
0
        public ExpectedModel[] GetForecastModel(ExpectedModel[] expectedModel, RelatedData relatedData)
        {
            int TempCount = relatedData.First;

            ExpectedModel[] TempExpectedModel = expectedModel;
            Array.Resize(ref TempExpectedModel, TempExpectedModel.Length + 5);
            for (int i = 55; i < TempExpectedModel.Length; i++)
            {
                TempExpectedModel[i] = new ExpectedModel()
                {
                    Sum = (TempExpectedModel[50].CoefficientOfSmoothingTheSeries
                           + TempExpectedModel[50].CoefficientOfSmoothingTheTrend * TempCount++)
                          * TempExpectedModel[i - 12].SeasoningSmoothingFactor,

                    Month = TempExpectedModel[i - 1].Month + 1,
                    Year  = TempExpectedModel[i - 1].Year
                };
            }
            TempExpectedModel = GetCoefficientSeriesAndTrend(TempExpectedModel, new RelatedData());
            TempExpectedModel = GetSeasoningSmoothingFactor(new RelatedData(), TempExpectedModel);
            TempExpectedModel = GetModelEstimationForecast(new RelatedData(), TempExpectedModel);

            return(TempExpectedModel);
        }
        private void ProcessAttributeSetsAsync(MixCmsContext context, IDbContextTransaction transaction)
        {
            foreach (var item in AttributeSets)
            {
                item.Fields = MixAttributeFields.UpdateViewModel.Repository.GetModelListBy(a => a.AttributeSetId == item.Id, context, transaction).Data?.OrderBy(a => a.Priority).ToList();
                // Filter list reference field => Add to Export Data if not exist
                var refFields = item.Fields.Where(f => f.DataType == MixEnums.MixDataType.Reference);

                foreach (var field in refFields)
                {
                    var refSet = AttributeSets.FirstOrDefault(m => m.Name == field.AttributeSetName);
                    if (refSet == null)
                    {
                        var getSet = MixAttributeSets.ImportViewModel.Repository.GetSingleModel(m => m.Name == field.AttributeSetName, context, transaction);
                        if (getSet.IsSucceed)
                        {
                            refSet = getSet.Data;
                            // Load ref data if export parent Data
                            if (item.IsExportData)
                            {
                                var refData = MixAttributeSetDatas.ImportViewModel.Repository.GetModelListBy(
                                    a => a.Specificulture == Specificulture && a.AttributeSetId == refSet.Id, context, transaction)
                                              .Data?.OrderBy(a => a.Priority).ToList();
                                if (refData != null)
                                {
                                    AttributeSetDatas.AddRange(refData);
                                }
                            }
                            AttributeSets.Add(getSet.Data);
                        }
                    }
                    else
                    {
                        refSet.IsExportData = refSet.IsExportData || item.IsExportData;
                        if (item.IsExportData)
                        {
                            refSet.Data = refSet.Data ?? MixAttributeSetDatas.ImportViewModel.Repository.GetModelListBy(
                                a => a.Specificulture == Specificulture && a.AttributeSetId == refSet.Id, context, transaction)
                                          .Data?.OrderBy(a => a.Priority).ToList();
                        }
                    }
                }
                // Load export data if checked and did not process
                if (item.IsExportData)
                {
                    var data = item.Data ?? MixAttributeSetDatas.ImportViewModel.Repository.GetModelListBy(
                        a => a.Specificulture == Specificulture && a.AttributeSetId == item.Id, context, transaction)
                               .Data?.OrderBy(a => a.Priority).ToList();
                    if (data != null)
                    {
                        AttributeSetDatas.AddRange(data);
                    }
                    foreach (var d in item.Data)
                    {
                        var getRelatedData = MixRelatedAttributeDatas.ReadViewModel.Repository.GetModelListBy(
                            m => m.ParentId == d.Id && d.Specificulture == Specificulture);
                        if (getRelatedData.IsSucceed)
                        {
                            RelatedData.AddRange(getRelatedData.Data);
                        }
                    }
                }
            }
        }
 public DP_DataRepository GetRelatedDataOfOriginalData(DP_DataRepository orginalData)
 {
     return(RelatedData.First(z => orginalData.KeyProperties.All(y => z.KeyProperties.Any(u => u.ColumnID == y.ColumnID && u.Value == y.Value))));
 }
 public void RemoveRelatedData(DP_DataRepository dP_DataRepository)
 {
     //var childRelationshipInfo = ChildRelationshipInfos.FirstOrDefault(x => x.Relationship.ID == relationshipID);
     //if (childRelationshipInfo != null)
     RelatedData.Remove(dP_DataRepository);
 }
 public List <DP_DataRepository> GetRelatedData(int relationshipID)
 {
     return(RelatedData.ToList());
     //    else return new List<ProxyLibrary.DP_DataRepository>();
 }
        public virtual List <ScrappedData> MapToScrappedData(ResultCollection <ResultItemCollection> data)
        {
            var scrappedDataColumnDefinitions = _columnDefinitionRepository.GetAllScrappedDataColumnDefinitions();
            var relatedDataColumnDefinitions  = _columnDefinitionRepository.GetAllRelatedDataColumnDefinitions();

            var list = new List <ScrappedData>();

            foreach (var product in data)
            {
                var scrappedData = new ScrappedData {
                    Identifier = product.Key
                };
                var group = "";
                foreach (var item in product.Items)
                {
                    if (item.IsMultiple)
                    {
                        //related data
                        if (scrappedData.RelatedData == null)
                        {
                            scrappedData.RelatedData = new List <RelatedData>();
                        }

                        var insertMultipleRow = _settingRepository.GetSettingValue <bool>("Core.Schema.IsMultipleRow");
                        if (insertMultipleRow)
                        {
                            var relatedData = new RelatedData
                            {
                                Description = item.Name,
                                String1     = item.Value.ToString()
                            };

                            scrappedData.RelatedData.Add(relatedData);
                        }
                        else
                        {
                            RelatedData relatedData;
                            if (!scrappedData.RelatedData.Any() || group != item.Group)
                            {
                                relatedData = new RelatedData {
                                    Group = item.Group
                                };
                                scrappedData.RelatedData.Add(relatedData);

                                if (group != item.Group)
                                {
                                    group = item.Group;
                                }
                            }
                            else
                            {
                                relatedData = scrappedData.RelatedData.First(x => x.Group == item.Group);
                            }

                            RelatedDataHelper.SetValue(relatedData, item.Name, relatedDataColumnDefinitions, item.Value);
                        }
                    }
                    else
                    {
                        //scrape data
                        if (scrappedDataColumnDefinitions.TryGetValue((nameof(ScrappedData), item.Name), out var value))
                        {
                            ScrappedDataHelper.SetValue(scrappedData, value, item.Value);
                        }
                    }
                }

                list.Add(scrappedData);
            }

            return(list);
        }
 public void RemoveRelatedData()
 {
     //var childRelationshipInfo = ChildRelationshipInfos.FirstOrDefault(x => x.Relationship.ID == relationshipID);
     //if (childRelationshipInfo != null)
     RelatedData.Clear();
 }
Example #28
0
        private async Task <RepositoryResponse <bool> > ImportPagesAsync(string destCulture,
                                                                         MixCmsContext _context = null, IDbContextTransaction _transaction = null)
        {
            var result = new RepositoryResponse <bool>()
            {
                IsSucceed = true
            };

            UnitOfWorkHelper <MixCmsContext> .InitTransaction(_context, _transaction, out MixCmsContext context, out IDbContextTransaction transaction, out bool isRoot);

            try
            {
                int startId = MixPages.UpdateViewModel.ModelRepository.Max(m => m.Id, context, transaction).Data + 1;
                //var pages = FileRepository.Instance.GetFile(MixConstants.CONST_FILE_PAGES, "data", true, "{}");
                //var obj = JObject.Parse(pages.Content);
                //var initPages = obj["data"].ToObject<JArray>();
                foreach (var item in Pages)
                {
                    // store old id => update to related data if save success
                    var oldId = item.Id;

                    item.Id = startId;
                    item.CreatedDateTime = DateTime.UtcNow;
                    item.ThemeName       = ThemeName;

                    //if (_context.MixPage.Any(m=>m.Id == startId)) //(item.Id > initPages.Count)
                    //{
                    //    item.Id = _context.MixPage.Max(m => m.Id) + 1;
                    //    item.CreatedDateTime = DateTime.UtcNow;
                    //}
                    if (!string.IsNullOrEmpty(item.Image))
                    {
                        item.Image = item.Image.Replace($"content/templates/{ThemeName}", $"content/templates/{MixService.GetConfig<string>("ThemeFolder", destCulture)}");
                    }
                    if (!string.IsNullOrEmpty(item.Thumbnail))
                    {
                        item.Thumbnail = item.Thumbnail.Replace($"content/templates/{ThemeName}", $"content/templates/{MixService.GetConfig<string>("ThemeFolder", destCulture)}");
                    }
                    item.Specificulture = destCulture;
                    var saveResult = await item.SaveModelAsync(true, context, transaction);

                    if (!saveResult.IsSucceed)
                    {
                        result.IsSucceed = false;
                        result.Exception = saveResult.Exception;
                        result.Errors    = saveResult.Errors;
                        break;
                    }
                    else
                    {
                        // update new id to related attribute data
                        var related = RelatedData.Where(
                            m => m.ParentType == (int)MixEnums.MixAttributeSetDataType.Page && m.ParentId == oldId.ToString());
                        foreach (var r in related)
                        {
                            r.ParentId = item.Id.ToString();
                        }
                        startId++;
                    }
                }
                UnitOfWorkHelper <MixCmsContext> .HandleTransaction(result.IsSucceed, isRoot, transaction);
            }
            catch (Exception ex) // TODO: Add more specific exeption types instead of Exception only
            {
                var error = UnitOfWorkHelper <MixCmsContext> .HandleException <MixPages.ImportViewModel>(ex, isRoot, transaction);

                result.IsSucceed = false;
                result.Errors    = error.Errors;
                result.Exception = error.Exception;
            }
            finally
            {
                //if current Context is Root
                if (isRoot)
                {
                    context?.Dispose();
                }
            }
            return(result);
        }
Example #29
0
 /// <summary>
 /// Maps the value to it's column in Related data
 /// so if String1 = Image, String2 = Image. Up to String10.
 /// If item.Name == Image, we check if String1 is empty, if yes we put the data there. if not, check String2 and so on until it got a place to store
 /// </summary>
 /// <param name="data">The object that we want to populate</param>
 /// <param name="definition">Example Image</param>
 /// <param name="columnDictionary">Holds the column definition value.</param>
 /// <param name="itemValue">the value that we want to store in the related data.</param>
 public static void SetValue(RelatedData data, string definition, Dictionary <(string, string), string> columnDictionary, object itemValue)
Example #30
0
        public ExpectedModel[] GetCoefficientSeriesAndTrend(ExpectedModel[] expectedModel, RelatedData relatedData)
        {
            for (int i = 0; i < expectedModel.Length; i++)
            {
                if (expectedModel[i].Month == 1)
                {
                    expectedModel[i].CoefficientOfSmoothingTheSeries = expectedModel[i].Sum;
                }

                else
                {
                    expectedModel[i].CoefficientOfSmoothingTheSeries = relatedData.K
                                                                       * expectedModel[i].Sum / relatedData.A10
                                                                       + (1 - relatedData.K)
                                                                       * (expectedModel[i - 1].CoefficientOfSmoothingTheSeries
                                                                          + expectedModel[i - 1].CoefficientOfSmoothingTheTrend);
                    expectedModel[i].CoefficientOfSmoothingTheTrend = relatedData.B
                                                                      * (expectedModel[i].CoefficientOfSmoothingTheSeries - expectedModel[i - 1].CoefficientOfSmoothingTheSeries)
                                                                      + (1 - relatedData.B)
                                                                      * expectedModel[i - 1].CoefficientOfSmoothingTheTrend;
                }
            }

            return(expectedModel);
        }