Exemplo n.º 1
0
        private void ProcessEmailJobStatus(string emailAddresses, AryaTask job, bool includeLogUrl, string customStatus = null)
        {
            var emailAddress = emailAddresses;
            var projectName  = string.Empty;

            try
            {
                using (var aryaDb = new AryaDbDataContext(job.ProjectID, job.SubmittedBy))
                {
                    if (string.IsNullOrWhiteSpace(emailAddress))
                    {
                        emailAddress = aryaDb.CurrentUser.EmailAddress;
                    }
                    projectName = aryaDb.CurrentProject.ProjectName;
                }
            }
            catch (UnauthorizedAccessException e)
            {
                CurrentLogWriter.Warn(e.Message);
            }

            try
            {
                AryaServices.SendEmail(job, includeLogUrl, customStatus, projectName, emailAddress, Settings.Default.PortalLocation);
            }
            catch (Exception ex)
            {
                CurrentLogWriter.Error(String.Format("Email sending has failed. {0} has occured. Details{1}",
                                                     ex.GetType(), ex.StackTrace));
            }
        }
Exemplo n.º 2
0
        protected void LoadExistingImportFields()
        {
            var connStr       = Util.GetAryaServicesConnectionString();
            var sqlConnection = new SqlConnection(connStr);
            var basepath      = ConfigurationManager.AppSettings["BasePath"];
            var id            = Request.QueryString["ID"];
            var projectID     = Request.QueryString["ProjectID"];

            using (var Dc = new AryaDbDataContext())
            {
                var projectName = (from p in Dc.Projects
                                   where p.ID == Guid.Parse(projectID)
                                   select p.ClientDescription + ' ' + p.SetName).Single();
                ddlProject.SelectedItem.Text = projectName;
            }
            projectId.Value = projectID;
            //string description = Session["Description"].ToString();
            //txtProjectDesc.Text = description;
            var cmd1 = new SqlCommand();

            cmd1.CommandText = "Select ArgumentDirectoryPath from AryaTask Where ID= @id";
            cmd1.CommandType = CommandType.Text;
            cmd1.Parameters.Add("@ID", SqlDbType.UniqueIdentifier).Value = Guid.Parse(id);
            //cmd1.Parameters.Add("@Description", SqlDbType.VarChar).Value = description;
            sqlConnection.Close();
            cmd1.Connection = sqlConnection;
            sqlConnection.Open();
            var xmlpathValue          = cmd1.ExecuteScalar().ToString();
            var path                  = Path.Combine(basepath, xmlpathValue);
            var ArgumentDirectoryPath = Path.Combine(path, WorkerArguments.ArgumentsFileName);

            ReadDataFromXMLFile(ArgumentDirectoryPath);
            sqlConnection.Close();
        }
Exemplo n.º 3
0
        private void AddTaxonomyToDataTable(Guid exportTaxonomyId)
        {
            using (var dc = new AryaDbDataContext(Args.ProjectId, Args.UserId))
            {
                var taxonomyInfo = dc.TaxonomyInfos.FirstOrDefault(ti => ti.ID == exportTaxonomyId);
                if (taxonomyInfo != null)
                {
                    var taxPath = taxonomyInfo.ToString();
                    if (Args.IgnoreT1Taxonomy)
                    {
                        taxPath = taxonomyInfo.ToString(true);// taxPath.Substring(taxPath.IndexOf('>') + 1);
                    }
                    if (string.IsNullOrEmpty(taxPath))
                    {
                        return;
                    }

                    var attributes = GetAttributes(dc, taxonomyInfo);

                    var isLeafNode = taxonomyInfo.IsLeafNode;

                    //if a node has no schema, just skip it.
                    if ((attributes.Count == 0) || (Args.LeafNodesOnly && isLeafNode == false))
                    {
                        //StatusMessage = string.Format("{1}{0}, Fetching Child Nodes", Environment.NewLine, exportTaxonomyId);
                        //var taxonomies =
                        //    taxonomyInfo.ChildTaxonomyDatas.Where(td => td.Active)
                        //                    .Select(td => td.TaxonomyInfo)
                        //                    .OrderBy(tax => tax.ToString());

                        //foreach (var tax in taxonomies)
                        //    AddTaxonomyToDataTable(tax.ID);
                        //CurrentProgress++;
                        return;
                    }

                    foreach (var attribute in attributes)
                    {
                        var schemaInfo = GetSchemaInfo(taxonomyInfo, attribute);
                        if (schemaInfo == null)
                        {
                            continue;
                        }

                        var row = SchemaExportData.NewRow();
                        foreach (DataColumn metaAttributeColumn in SchemaExportData.Columns)
                        {
                            var cellValue = GetColumnValue(dc, schemaInfo, metaAttributeColumn.ColumnName);
                            if (!string.IsNullOrEmpty(cellValue))
                            {
                                row[metaAttributeColumn] = cellValue;
                                continue;
                            }
                            row[metaAttributeColumn] = string.Empty;
                        }
                        SchemaExportData.Rows.Add(row);
                    }
                } //end of if (taxonomyInfo != null)
            }     //end of using
        }
Exemplo n.º 4
0
        private void dgv_CellDoubleClick(object sender, DataGridViewCellEventArgs e)
        {
            if (e.RowIndex < 0 || dgv.Columns[ImageColumn] == null || e.ColumnIndex != dgv.Columns[ImageColumn].Index)
            {
                return;
            }

            using (
                var dc = new AryaDbDataContext(AryaTools.Instance.InstanceData.CurrentProject.ID,
                                               AryaTools.Instance.InstanceData.CurrentUser.ID))
            {
                var imageMgr = new ImageManager(dc, AryaTools.Instance.InstanceData.CurrentProject.ID);
                if (!imageMgr.UploadImage())
                {
                    return;
                }

                imageMgr.AddAttributeValue("LovId", _lovs[e.RowIndex].Id.ToString());
                imageMgr.AddAttributeValue("TaxonomyId", SchemaInfo.TaxonomyID.ToString());
                imageMgr.AddAttributeValue("AttributeId", SchemaInfo.AttributeID.ToString());

                SchemaInfo.TaxonomyInfo.SkuInfos.Add(new SkuInfo {
                    SkuID = imageMgr.ImageSku.ID
                });

                AryaTools.Instance.SaveChangesIfNecessary(false, false);

                dgv.Rows[e.RowIndex].Cells[ImageColumn].Value = imageMgr.RemoteImageGuid;
                if (AryaTools.Instance.Forms.TreeForm.ShowEnrichments)
                {
                    AryaTools.Instance.Forms.BrowserForm.DisplayImage(imageMgr);
                }
            }
        }
Exemplo n.º 5
0
        private void ProcessTaxonomySkus(TaxonomyInfo node)
        {
            try
            {
                //Must use independent DataContext to conserve memory
                using (var dc = new AryaDbDataContext(Arguments.ProjectId, Arguments.UserId))
                {
                    var allSkus = from si in dc.SkuInfos
                                  where si.Active && si.TaxonomyID == node.ID
                                  let sku = si.Sku
                                            where sku.SkuType == Sku.ItemType.Product.ToString()
                                            select sku;

                    var skus = ((AdvancedExportArgs)Arguments).GetFilteredSkuList(allSkus).Select(s => s.ID).ToList();

                    skus.AsParallel().ForAll(ProcessSku);
                    //skus.ForEach(ProcessSku);
                }
            }
            catch (Exception exception)
            {
                var message = string.Empty;
                var ex      = exception;
                while (ex != null)
                {
                    message += ex.Message + Environment.NewLine;
                    message += ex.StackTrace + Environment.NewLine;
                    ex       = ex.InnerException;
                }
                CurrentLogWriter.Warn("There was a problem processing skus in node." + Environment.NewLine + message);
            }
        }
Exemplo n.º 6
0
 public DerivedEntityData(AryaDbDataContext parentContext, bool initialize = true)
     : this()
 {
     ParentContext = parentContext;
     Initialize    = initialize;
     InitEntity();
 }
Exemplo n.º 7
0
 public AttributeGroup(AryaDbDataContext parentContext, bool initialize = true)
     : this()
 {
     ParentContext = parentContext;
     Initialize    = initialize;
     InitEntity();
 }
        /// <summary>
        /// Update Derived Attribute Values in this SKU
        /// </summary>
        /// <param name="sku"></param>
        /// <param name="derivedAttributes"></param>
        /// <param name="dc"></param>
        private void ProcessSku(Sku sku, IEnumerable <Attribute> derivedAttributes, AryaDbDataContext dc)
        {
            var derivedValues = sku.DerivedEntityDatas.Where(ded => ded.Active).ToDictionary(d => d.AttributeID, d => d);

            foreach (var att in derivedAttributes)
            {
                var value = sku.GetValuesForAttribute(dc, att, false).First().Value;

                if (derivedValues.ContainsKey(att.ID))
                {
                    if (derivedValues[att.ID].Value == value)
                    {
                        continue; //No change to the value, nothing to do here...
                    }
                    //Deactivate this value; we'll insert a new value later
                    derivedValues[att.ID].Active = false;
                }

                if (string.IsNullOrWhiteSpace(value))
                {
                    continue;
                }

                sku.DerivedEntityDatas.Add(new DerivedEntityData(dc)
                {
                    Attribute = att, Value = value
                });
                ++_iValueCount;
            }
            ++_iSkuCount;
        }
Exemplo n.º 9
0
        private string GetTaxMetaAttributeValue(AryaDbDataContext dc, string taxMetaAttributeName,
                                                TaxonomyInfo taxonomy)
        {
            var taxMetaData =
                (dc.TaxonomyMetaDatas.FirstOrDefault(
                     tmd =>
                     tmd.TaxonomyMetaInfo.TaxonomyID.Equals(taxonomy.ID) &&
                     tmd.TaxonomyMetaInfo.MetaAttributeID.Equals(AllTaxMetaAttributes[taxMetaAttributeName].ID) &&
                     tmd.Active));
            string value = taxMetaData == null ? string.Empty : taxMetaData.Value;

            if (String.Compare(taxMetaAttributeName, Resources.TaxonomyEnrichmentImageAttributeName,
                               StringComparison.OrdinalIgnoreCase) == 0)
            {
                var imageMgr = new ImageManager(dc, Args.ProjectId, value)
                {
                    LocalDirectory  = ArgumentDirectoryPath,
                    RemoteImageGuid = value
                };
                //if (!Directory.Exists(imageMgr.LocalDirectory))
                //    Directory.CreateDirectory(imageMgr.LocalDirectory);
                if (Args.DownloadAssets)
                {
                    imageMgr.DownloadImage(taxonomy.ID);
                }
                value = imageMgr.OriginalFileName;
            }
            return(value);
        }
Exemplo n.º 10
0
        protected override void FetchExportData()
        {
            try
            {
                StatusMessage = string.Format("Taxonomy Export worker has started");
                var exportTaxonomyIds = new List <Guid>();
                using (var dc = new AryaDbDataContext(Args.ProjectId, Args.UserId))
                {
                    var taxs =
                        (from tax in dc.TaxonomyInfos where Args.TaxonomyIds.Contains(tax.ID) select tax).ToList();
                    exportTaxonomyIds.AddRange(taxs.Select(tx => tx.ID));
                    exportTaxonomyIds.AddRange(taxs.SelectMany(ti => ti.AllChildren).Select(tax => tax.ID).ToList());
                }

                foreach (var exportTaxonomyId in exportTaxonomyIds)
                {
                    AddTaxonomyToDataTable(exportTaxonomyId);
                }
                ExportDataTables.Add(TaxonomyExportData);
                State         = WorkerState.Complete;
                StatusMessage = string.Format("Taxonomy Export worker completed");
            }
            catch (Exception ex)
            {
                Summary.SetError(ex);
            }
        }
Exemplo n.º 11
0
        public UserProject(AryaDbDataContext parenteContext, bool initialize = true) : this()
        {
            ParentContext = parenteContext;
            Initialize    = initialize;
            InitEntity();

            GroupID = Group.DefaultGroupID;
        }
Exemplo n.º 12
0
 private bool DuplicateTaxonomyIndb(ImportArgs importArgs)
 {
     using (var CurrentDbContext = new AryaDbDataContext(importArgs.ProjectId, importArgs.UserId))
     {
         return(CurrentDbContext.ExecuteQuery <string>(@"SELECT TaxonomyPath
                                                 FROM V_Taxonomy
                                                 WHERE TaxonomyPath <> ''
                                                 AND ProjectId = {0} GROUP BY TaxonomyPath Having  Count(*) > 1", importArgs.ProjectId).Count() > 0);
     }
 }
Exemplo n.º 13
0
        private void BlankImageForm()
        {
            using (
                var dc = new AryaDbDataContext(AryaTools.Instance.InstanceData.CurrentProject.ID,
                                               AryaTools.Instance.InstanceData.CurrentUser.ID))
            {
                var imageMgr = new ImageManager(dc, AryaTools.Instance.InstanceData.CurrentProject.ID);

                AryaTools.Instance.Forms.BrowserForm.DisplayImage(imageMgr);
            }
        }
Exemplo n.º 14
0
        protected void SelectProject()
        {
            var currentProject = ddlProject.SelectedItem.Value;

            using (var Dc = new AryaDbDataContext())
            {
                var currentProjectID =
                    (from p in Dc.Projects where p.ClientDescription + ' ' + p.SetName == currentProject select p.ID)
                    .FirstOrDefault();
                projectId.Value = currentProjectID.ToString();
            }
        }
Exemplo n.º 15
0
        private string GetDatabaseName(Guid projectId)
        {
            string results = String.Empty;

            using (var dc = new AryaDbDataContext())
            {
                var project = dc.Projects.FirstOrDefault(p => p.ID == projectId);
                if (project != null)
                {
                    results = project.DatabaseName;
                }
            }
            return(results);
        }
Exemplo n.º 16
0
        private List <ItemInfo> GetItemValues(Guid taxId)
        {
            using (var dc = new AryaDbDataContext(_args.ProjectId, _args.UserId))
            {
                var taxonomy = dc.TaxonomyInfos.Where(ti => ti.ID == taxId).First();

                var attributes = (from ti in dc.TaxonomyInfos
                                  where ti.ID == taxId
                                  from si in ti.SchemaInfos
                                  from sd in si.SchemaDatas
                                  where sd.Active && sd.InSchema
                                  //let navOrder = sd.NavigationOrder == 0 ? 999 : sd.NavigationOrder
                                  //let dispOrder = sd.DisplayOrder == 0 ? 999 : sd.DisplayOrder
                                  //orderby navOrder, dispOrder
                                  select si.Attribute.AttributeName).Distinct().ToList();

                var values = (from si in dc.SkuInfos
                              where si.Active && si.TaxonomyID == taxId
                              from ed in dc.EntityDatas
                              let sku = ed.EntityInfo.Sku
                                        let attributeName = ed.Attribute.AttributeName
                                                            where ed.Active && sku.ID == si.SkuID && attributes.Contains(attributeName)
                                                            select new { SkuID = sku.ID, sku.ItemID, AttributeName = attributeName, ed.Value, ed.Uom }).ToList();

                var itemValues = from val in values
                                 group val by val.ItemID
                                 into grp
                                 select
                                 new ItemInfo
                {
                    SkuId        = grp.First().SkuID,
                    ItemId       = grp.First().ItemID,
                    TaxonomyId   = taxonomy.ID,
                    TaxonomyPath = taxonomy.ToString(_args.IgnoreT1Taxonomy),
                    SchemaValues = (from attVal in grp
                                    group attVal by attVal.AttributeName
                                    into attGrp
                                    select
                                    new
                    {
                        Attribute = attGrp.Key,
                        Values =
                            grp.Select(val => (val.Value + " " + (val.Uom ?? string.Empty)).Trim())
                            .ToList()
                    }).ToDictionary(av => av.Attribute, av => av.Values)
                };

                return(itemValues.ToList());
            }
        }
Exemplo n.º 17
0
        // Private Methods (2) 

        partial void OnActiveChanged()
        {
            if (Active)
            {
                return;
            }
            var parentContext = ParentContext;

            if (parentContext == null)
            {
                return;
            }
            AryaDbDataContext.DefaultDeletedTableValue(this, parentContext.CurrentUser.ID);
        }
Exemplo n.º 18
0
        private Dictionary <string, Attribute> GetAllTaxMetaAttributes()
        {
            var emptyGuid      = new Guid();
            var metaAttributes = new List <Attribute>();
            List <Attribute> activeMetaAttributes = new List <Attribute>();

            //var metaAttributes = new List<Attribute>();
            if (Args.ExportEnrichments || Args.ExportMetaAttributes)
            {
                using (var dc = new AryaDbDataContext(Args.ProjectId, Args.UserId))
                {
                    metaAttributes = (from att in dc.Attributes
                                      where
                                      att.ProjectID.Equals(dc.CurrentProject.ID) &&
                                      att.AttributeType.Equals(AttributeTypeEnum.TaxonomyMeta.ToString()) &&
                                      att.SchemaInfos.Any(si => si.SchemaDatas.Any(sd => sd.Active))
                                      let displayRank = (from si in att.SchemaInfos
                                                         where si.TaxonomyID.Equals(emptyGuid)
                                                         from sd in si.SchemaDatas
                                                         where sd.Active
                                                         select sd.DisplayOrder).FirstOrDefault()
                                                        orderby displayRank, att.AttributeName
                                      select att).ToList();

                    foreach (var metaAttribute in metaAttributes)
                    {
                        var si = metaAttribute.SchemaInfos.FirstOrDefault(s => s.TaxonomyID.Equals(Guid.Empty));
                        if (si != null && si.SchemaData.InSchema)
                        {
                            activeMetaAttributes.Add(metaAttribute);
                        }
                    }
                    //remove enrichment
                    if (!Args.ExportEnrichments)
                    {
                        activeMetaAttributes = activeMetaAttributes.Where(s => !Attribute.TaxonomyEnrichmentAttributes.Contains(s.AttributeName)).ToList();
                    }
                    if (!Args.ExportMetaAttributes)
                    {
                        activeMetaAttributes =
                            activeMetaAttributes.Where(
                                s =>
                                s.AttributeType != AttributeTypeEnum.TaxonomyMeta.ToString() ||
                                Attribute.TaxonomyEnrichmentAttributes.Contains(s.AttributeName)).ToList();
                    }
                    //metaAttributeNames = metaAttributeNames.Select(ta => ta.AttributeName).ToList();
                } //end of using
            }
            return(activeMetaAttributes.ToDictionary(ma => ma.AttributeName, ma => ma));
        }
Exemplo n.º 19
0
        protected void DisplayProjectList()
        {
            var availableProjects = new List <ListItem>();

            using (var Dc = new AryaDbDataContext())
            {
                var currUser =
                    (from u in Dc.Users where u.EmailAddress == ((SiteMaster)Page.Master).Email select u)
                    .FirstOrDefault();

                var userID   = currUser.ID;
                var userName = currUser.FullName;
                var userRole = currUser.IsAdmin;
                userId.Value = userID.ToString();

                var existingDatabases = Dc.ExecuteQuery <string>("select name from sys.databases").ToList();
                if (!userRole)
                {
                    var projects = (from ug in currUser.UserProjects
                                    where
                                    ug.GroupID == Group.ImportAdminGroup ||
                                    ug.GroupID == Group.ImportUserGroup &&
                                    existingDatabases.Contains(ug.Project.DatabaseName)
                                    orderby ug.Project.DatabaseName ascending
                                    select ug.Project).Distinct();
                    availableProjects =
                        projects.Select(p => new ListItem {
                        Text = p.ClientDescription + " " + p.SetName
                    }).ToList();
                }
                else
                {
                    var projects =
                        (from p in Dc.Projects
                         where existingDatabases.Contains(p.DatabaseName)
                         orderby p.DatabaseName ascending
                         select p);

                    availableProjects =
                        projects.Select(p => new ListItem {
                        Text = p.ClientDescription + " " + p.SetName
                    })
                        .Distinct()
                        .ToList();
                }
                ddlProject.Items.Insert(0, "Select a Project");
                availableProjects.ForEach(ap => ddlProject.Items.Add(ap));
            }
        }
Exemplo n.º 20
0
        private void WriteTaxMetaValue(TaxonomyInfo taxonomy)
        {
            foreach (var taxMetaAttribute in _taxMetaAttributes)
            {
                var    rawAttributeValue   = GetValue(taxMetaAttribute, taxonomy);
                string finalAttributeValue = rawAttributeValue;

                if (ExportEnrichments)
                {
                    if (taxMetaAttribute.ToString() == Resources.TaxonomyEnrichmentCopyAttributeName)
                    {
                        // replace carriage returns with "|"
                        if (!String.IsNullOrEmpty(rawAttributeValue))
                        {
                            var returnChar =
                                AryaTools.Instance.InstanceData.CurrentProject.ProjectPreferences.ReturnSeparator ?? "|";
                            finalAttributeValue = rawAttributeValue.Replace("\r", String.Empty).Replace("\n", returnChar);
                        }
                    }
                    else if (taxMetaAttribute.ToString() == Resources.TaxonomyEnrichmentImageAttributeName)
                    {
                        using (var dc =
                                   new AryaDbDataContext(AryaTools.Instance.InstanceData.CurrentProject.ID,
                                                         AryaTools.Instance.InstanceData.CurrentUser.ID))
                        {
                            var imageMgr = new ImageManager(dc, AryaTools.Instance.InstanceData.CurrentProject.ID)
                            {
                                ImageSku = dc.Skus.FirstOrDefault(s => s.ItemID == rawAttributeValue)
                            };

                            // retrieve Enrichment Image, if it exists
                            if (DownloadAssets)
                            {
                                imageMgr.LocalDirectory = _downloadDir.ToString();
                                imageMgr.DownloadImage(taxonomy.ID);
                                finalAttributeValue = imageMgr.LocalImageName;
                            }
                            else
                            {
                                finalAttributeValue = imageMgr.RemoteImageUrl;
                            }
                        }
                    }
                }

                _taxFile.Write("{0}{1}", _delimiter, finalAttributeValue);
            }
            _taxFile.WriteLine();
        }
Exemplo n.º 21
0
 private string GetColumnValue(AryaDbDataContext dc, TaxonomyInfo taxonomyInfo, string columnName)
 {
     if (_taxColumns.Contains(columnName))
     {
         if (columnName == "Taxonomy")
         {
             return(taxonomyInfo.ToString(Args.IgnoreT1Taxonomy));
         }
         return(GetTn(taxonomyInfo, columnName));
     }
     if (columnName == "NodeDescription")
     {
         return(taxonomyInfo.TaxonomyData.NodeDescription);
     }
     return(GetTaxMetaAttributeValue(dc, columnName, taxonomyInfo));
 }
Exemplo n.º 22
0
        private static IEnumerable <AryaTask> GetTasks(AryaDbDataContext aryaDc,
                                                       AryaServicesDbDataContext taskDc, User currUser, Guid userGroup, IEnumerable <string> jobTypes,
                                                       bool currentUserTasksOnly)
        {
            var projects =
                (from ug in aryaDc.UserProjects
                 where ug.GroupID == userGroup && ug.UserID == currUser.ID
                 select ug.ProjectID).ToList();

            return(projects.Any()
                ? taskDc.AryaTasks.Where(
                       task =>
                       projects.Contains(task.ProjectID) && jobTypes.Contains(task.JobType) &&
                       (!currentUserTasksOnly || task.SubmittedBy == currUser.ID))
                : Enumerable.Empty <AryaTask>());
        }
Exemplo n.º 23
0
        private IEnumerable <Attribute> GetAttributes(AryaDbDataContext dc, TaxonomyInfo currentTaxonomyInfo)
        {
            var attributes = new List <Attribute>();

            if (Args.LeafNodesOnly && !currentTaxonomyInfo.IsLeafNode)
            {
                return(attributes);
            }
            if (currentTaxonomyInfo.GetSkus(Args.ExportCrossListNodes).Any(t => t.SkuType == "Product") || Args.ExportEmptyNodes)
            {
                if (!currentTaxonomyInfo.IsLeafNode)
                {
                    var schemaInfos = new List <SchemaInfo>();
                    schemaInfos.AddRange(
                        currentTaxonomyInfo.SchemaInfos.Where(si => si.SchemaDatas.Any(sd => sd.Active)).ToList());

                    var schemaAttributes =
                        schemaInfos.Where(p => p.SchemaData.InSchema).Select(p => new { p.Attribute, p.SchemaData }).ToList();

                    attributes = (from att in schemaAttributes
                                  group att by att.Attribute
                                  into grp
                                  let minRank = grp.Min(p => GetRank(p.SchemaData, SortOrder.OrderbyDisplayNavigation))
                                                orderby minRank
                                                select grp.Key).Distinct().ToList();
                }
                else
                {
                    attributes = (from si in dc.SchemaInfos
                                  where si.TaxonomyID == currentTaxonomyInfo.ID
                                  let sd = si.SchemaDatas.FirstOrDefault(sd => sd.Active)
                                           where sd != null
                                           let inSchema = sd.InSchema
                                                          where inSchema
                                                          let navRank = sd == null || sd.NavigationOrder == 0 ? decimal.MaxValue : sd.NavigationOrder
                                                                        let dispRank = sd == null || sd.DisplayOrder == 0 ? decimal.MaxValue : sd.DisplayOrder
                                                                                       orderby navRank, dispRank
                                  select si.Attribute).ToList();
                }
                return(attributes);
            }


            return(attributes);
        }
Exemplo n.º 24
0
        private void ProcessSku(ItemNode node, Sku sku)
        {
            try
            {
                using (var dc = new AryaDbDataContext(Arguments.ProjectId, Arguments.UserId))
                {
                    var dbItem = dc.Skus.Single(s => sku.ID == s.ID);
                    var psp    = (from ei in dbItem.EntityInfos
                                  from ed in ei.EntityDatas
                                  where
                                  ed.Active &&
                                  (ed.Attribute.AttributeName.ToLower().Contains("primary keyword") ||
                                   ed.Attribute.AttributeName.ToLower().Contains("psp"))
                                  orderby ed.Attribute.AttributeName descending
                                  select ed.Value).FirstOrDefault() ?? "Item " + dbItem.ItemID;

                    var resultItem = Item.FromValues(node, dbItem.ID, dbItem.ItemID, psp);

                    ProcessAttributeValues(dbItem, resultItem);

                    resultItem.SerializeObject(GetSaveFilePath("Item", dbItem.ID.ToString()));
                }
            }
            catch (Exception ex)
            {
                var message = Environment.NewLine + "Method: ProcessSku";
                var e       = ex;
                while (e != null)
                {
                    message = Environment.NewLine + e.Message;
                    e       = e.InnerException;
                }
                CurrentLogWriter.Error(ex.Source + message + Environment.NewLine + ex.StackTrace);
                if (Summary.Warnings == null)
                {
                    Summary.Warnings = new List <WorkerWarning>();
                }
                Summary.Warnings.Add(new WorkerWarning
                {
                    ErrorMessage = ex.Message,
                    ErrorDetails = ex.StackTrace,
                    LineData     = sku.ItemID
                });
            }
        }
Exemplo n.º 25
0
        private void FetchProjects()
        {
            using (var dc = new AryaDbDataContext())
            {
                var currUser =
                    (from u in dc.Users where u.EmailAddress == ((SiteMaster)Page.Master).Email select u)
                    .FirstOrDefault();
                if (currUser == null)
                {
                    throw new UnauthorizedAccessException();
                }

                UserId.Value = currUser.ID.ToString();

                var p = currUser.IsAdmin
                    ? dc.Projects
                    : currUser.UserProjects.Where(
                    dp =>
                    dp.GroupID == Group.ExportAdminGroup || dp.GroupID == Group.StandardExportUserGroup ||
                    dp.GroupID == Group.CustomExportUserGroup).Select(dp => dp.Project);

                var existingDatabases = dc.ExecuteQuery <string>("SELECT LOWER(name) FROM sys.databases").ToList();
                p = p.Where(dp => existingDatabases.Contains(dp.DatabaseName.ToLower())).Select(dp => dp);

                var availableProjects =
                    p.Select(
                        dp =>
                        new ListItem
                {
                    Text  = string.Format("{0} {1}", dp.ClientDescription, dp.SetName),
                    Value = dp.ID.ToString()
                }).Distinct().OrderBy(li => li.Text).ToList();

                availableProjects.Insert(0, new ListItem("---Select a Model---", "---Select a Model---"));
                ddlModel.DataSource = availableProjects;
                ddlModel.DataBind();

                if (availableProjects.Count == 1)
                {
                    ddlModel.SelectedIndex = 1;
                    FetchExportTypes();
                }
            }
        }
Exemplo n.º 26
0
        protected override void FetchExportData()
        {
            CurrentLogWriter.Info("Fetching SKUs");
            _args = (ExportArgs)Arguments;
            List <Guid> allTaxIds;

            using (var dc = new AryaDbDataContext(_args.ProjectId, _args.UserId))
            {
                var taxIds = (from ti in dc.TaxonomyInfos where _args.TaxonomyIds.Contains(ti.ID) select ti).ToList();
                allTaxIds = taxIds.SelectMany(ti => ti.AllChildren).Select(ti => ti.ID).ToList();
            }
            _iNodeCount = allTaxIds.Count;
            allTaxIds.ForEach(ProcessNode);
            //allTaxIds.AsParallel().ForAll(ProcessNode);
            //_args.ItemIds.AsParallel().ForAll(sourceItemId => ProcessItem(sourceItemId));

            CurrentLogWriter.Info("Saving Results");
            ExportDataTables.Add(DuplicateSkusTable);
        }
Exemplo n.º 27
0
        private void dgv_CellEnter(object sender, DataGridViewCellEventArgs e)
        {
            if (e.RowIndex < 0 || dgv.Columns[ImageColumn] == null ||
                !AryaTools.Instance.Forms.TreeForm.ShowEnrichments)
            {
                return;
            }

//            TaxonomyInfo taxonomy = SchemaInfo.TaxonomyInfo;

            if (dgv[dgv.Columns[ImageColumn].Index, e.RowIndex].Value != null)
            {
                var image = _lovs[e.RowIndex].EnrichmentImageId;
                if (!string.IsNullOrEmpty(image))
                {
                    using (
                        var dc = new AryaDbDataContext(AryaTools.Instance.InstanceData.CurrentProject.ID,
                                                       AryaTools.Instance.InstanceData.CurrentUser.ID))
                    {
                        var imageMgr = new ImageManager(dc, AryaTools.Instance.InstanceData.CurrentProject.ID)
                        {
                            ImageSku = dc.Skus.FirstOrDefault(sku => sku.ItemID == image)
                        };
                        AryaTools.Instance.Forms.BrowserForm.DisplayImage(imageMgr);
                    }
                }
                else
                {
                    BlankImageForm();
                }
            }
            else
            {
                using (
                    var dc = new AryaDbDataContext(AryaTools.Instance.InstanceData.CurrentProject.ID,
                                                   AryaTools.Instance.InstanceData.CurrentUser.ID))
                {
                    var imageMgr = new ImageManager(dc, AryaTools.Instance.InstanceData.CurrentProject.ID);

                    AryaTools.Instance.Forms.BrowserForm.DisplayImage(imageMgr);
                }
            }
        }
        /// <summary>
        /// Process each SKU Set separately (using a new Data Context)
        /// </summary>
        /// <param name="skuSet"></param>
        private void ProcessSkuSet(List <Guid> skuSet)
        {
            using (var dc = new AryaDbDataContext(Arguments.ProjectId, Arguments.UserId))
            {
                //Get all Derived attributes
                var derivedAttributes =
                    dc.Attributes.Where(att => att.AttributeType == AttributeTypeEnum.Derived.ToString()).ToList();

                var skus = dc.Skus.Where(sku => skuSet.Contains(sku.ID));

                var iCtr = 0;

                if (Summary.Warnings == null)
                {
                    Summary.Warnings = new List <WorkerWarning>();
                }
                //var dbCommand = dc.GetCommand(skus);
                //Summary.Warnings.Add(new WorkerWarning { ErrorDetails = dbCommand.CommandText });
                //foreach (DbParameter parameter in dbCommand.Parameters)
                //{
                //    Summary.Warnings.Add(new WorkerWarning
                //                         {
                //                             ErrorMessage = parameter.ParameterName,
                //                             ErrorDetails = parameter.Value.ToString()
                //                         });
                //}
                foreach (var sku in skus)
                {
                    ProcessSku(sku, derivedAttributes, dc);

                    if (++iCtr % 100 != 0)
                    {
                        continue;
                    }

                    dc.SubmitChanges();
                    StatusMessage = string.Format("{0} SKUs processed, {1} Values inserted/updated.", _iSkuCount, _iValueCount);
                }

                dc.SubmitChanges();
                StatusMessage = string.Format("{0} SKUs processed, {1} Values inserted/updated.", _iSkuCount, _iValueCount);
            }
        }
        private void UpdateDerivedEntities()
        {
            State         = WorkerState.Working;
            StatusMessage = "Init";

            //Set the current Db - this will only be used for High Level processing
            //Using the same Datacontext for all work is causing OutOfMemory Exception
            //So, I'll have to use a bunch of 'worker' datacontexts
            using (var dc = new AryaDbDataContext(Arguments.ProjectId, Arguments.UserId))
            {
                var skuSets = GetSkuSets(dc);

                foreach (var skuSet in skuSets)
                {
                    ProcessSkuSet(skuSet);
                }
            }
            State = WorkerState.Complete;
        }
Exemplo n.º 30
0
        private void ProcessTaxonomySkus(TaxonomyInfo ti)
        {
            //Must use independent DataContext to conserve memory
            using (var dc = new AryaDbDataContext(Arguments.ProjectId, Arguments.UserId))
            {
                var node = ItemNode.FromValues(ti.ID, ti.ProjectID,
                                               ti.ToString(((AdvancedExportArgs)Arguments).IgnoreT1Taxonomy), ti.NodeName);

                //var allSkus = from si in dc.SkuInfos
                //              where si.Active && si.TaxonomyID == ti.ID
                //              let sku = si.Sku
                //              where sku.SkuType == Sku.ItemType.Product.ToString()
                //              select sku;

                var allSkus = ti.GetSkus(_args.ExportCrossListNodes);
                var skus    = ((AdvancedExportArgs)Arguments).GetFilteredSkuList(allSkus).ToList();

                skus.AsParallel().ForAll(sku => ProcessSku(node, sku));
            }
        }