private ActivityTemplateDO[] GenerateSeedData()
        {
            using (var uow = ObjectFactory.GetInstance <IUnitOfWork>())
            {
                var terminals = GenerateTerminals(5).ToArray();

                foreach (var terminal in terminals)
                {
                    uow.TerminalRepository.Add(terminal);
                }

                var webServices = new ActivityCategoryDO[5];

                for (int i = 1; i <= 5; i++)
                {
                    webServices[i - 1] = CreateWebService(i);
                    uow.ActivityCategoryRepository.Add(webServices[i - 1]);
                }

                uow.SaveChanges();

                var templates = new ActivityTemplateDO[20];

                for (int i = 1; i <= 20; i++)
                {
                    templates[i - 1] = CreateActivityTemplate(FixtureData.GetTestGuidById(i), terminals[i % 5], webServices[i % 5]);
                    uow.ActivityTemplateRepository.Add(templates[i - 1]);
                }

                uow.SaveChanges();

                return(templates);
            }
        }
Example #2
0
        private ActivityTemplateDO Clone(ActivityTemplateDO source)
        {
            var newTemplate = new ActivityTemplateDO();

            CopyPropertiesHelper.CopyProperties(source, newTemplate, false);
            newTemplate.Terminal = _terminal.GetByKey(source.TerminalId);

            if (source.Categories != null)
            {
                newTemplate.Categories = new List <ActivityCategorySetDO>();
                foreach (var acs in source.Categories)
                {
                    var newActivityCategory = new ActivityCategoryDO();
                    var activityCategory    = _activityCategory.GetById(acs.ActivityCategoryId);
                    CopyPropertiesHelper.CopyProperties(activityCategory, newActivityCategory, false);

                    newTemplate.Categories.Add(new ActivityCategorySetDO()
                    {
                        ActivityTemplateId = newTemplate.Id,
                        ActivityTemplate   = newTemplate,
                        ActivityCategoryId = newActivityCategory.Id,
                        ActivityCategory   = newActivityCategory
                    });
                }
            }

            return(newTemplate);
        }
        private ActivityCategoryDO Clone(ActivityCategoryDO activityCategory)
        {
            var newActivityCategory = new ActivityCategoryDO();

            CopyPropertiesHelper.CopyProperties(activityCategory, newActivityCategory, false);

            return(newActivityCategory);
        }
 private static bool AreEqual(ActivityCategoryDO a, ActivityCategoryDO b, bool skipId = false)
 {
     return(a.IconPath == b.IconPath &&
            (skipId || a.Id == b.Id) &&
            a.Name == b.Name);
 }
        private ActivityTemplateDO CreateActivityTemplate(Guid id, TerminalDO terminal, ActivityCategoryDO webService, string prefix = "")
        {
            var result = new ActivityTemplateDO
            {
                Id = id,
                ActivityTemplateState = 1,
                MinPaneWidth          = 330,
                Description           = prefix + "des" + id,
                Name  = "name" + id,
                Label = prefix + "label" + id,
                NeedsAuthentication = true,
                Tags       = prefix + "tags" + id,
                TerminalId = terminal.Id,
                Terminal   = terminal,
                Type       = ActivityType.Standard,
                Version    = "1"
            };

            result.Categories = new List <ActivityCategorySetDO>()
            {
                new ActivityCategorySetDO()
                {
                    ActivityCategory = webService,
                    ActivityTemplate = result
                }
            };

            return(result);
        }
Example #6
0
        private void AddOrUpdateActivityCategory(IUnitOfWork uow, Guid id, string name, string iconPath)
        {
            var activityTemplateAssignments = new List <ActivityTemplateDO>();

            var existingActivityCategoryByName = uow.ActivityCategoryRepository
                                                 .GetQuery()
                                                 .FirstOrDefault(x => x.Name == name && x.Id != id);

            if (existingActivityCategoryByName != null)
            {
                var existingAssignments = uow.ActivityCategorySetRepository.GetQuery()
                                          .Where(x => x.ActivityCategoryId == existingActivityCategoryByName.Id)
                                          .ToList();

                foreach (var assignment in existingAssignments)
                {
                    activityTemplateAssignments.Add(assignment.ActivityTemplate);
                    uow.ActivityCategorySetRepository.Remove(assignment);
                }
                uow.SaveChanges();

                uow.ActivityCategoryRepository.Remove(existingActivityCategoryByName);
                uow.SaveChanges();
            }

            var activityCategory = uow.ActivityCategoryRepository
                                   .GetQuery()
                                   .FirstOrDefault(x => x.Id == id);

            if (activityCategory == null)
            {
                activityCategory = new ActivityCategoryDO()
                {
                    Id       = id,
                    Name     = name,
                    IconPath = iconPath,
                    Type     = null
                };

                uow.ActivityCategoryRepository.Add(activityCategory);
            }
            else
            {
                activityCategory.IconPath = iconPath;
            }

            foreach (var assignedActivityTemplate in activityTemplateAssignments)
            {
                if (!string.IsNullOrEmpty(assignedActivityTemplate.Terminal.Name))
                {
                    uow.ActivityCategorySetRepository.Add(
                        new ActivityCategorySetDO()
                    {
                        Id = Guid.NewGuid(),
                        ActivityCategoryId = activityCategory.Id,
                        ActivityCategory   = activityCategory,
                        ActivityTemplateId = assignedActivityTemplate.Id,
                        ActivityTemplate   = assignedActivityTemplate
                    });
                }
            }

            uow.SaveChanges();
        }
        public ActivityCategoryDO RegisterOrUpdate(ActivityCategoryDO activityCategory)
        {
            if (!IsATandTCacheDisabled)
            {
                Initialize();
            }

            lock (_activityCategories)
            {
                using (var uow = ObjectFactory.GetInstance <IUnitOfWork>())
                {
                    var activityCategoryByName = uow.ActivityCategoryRepository
                                                 .GetQuery()
                                                 .FirstOrDefault(x => x.Name == activityCategory.Name && x.Id != activityCategory.Id);

                    if (activityCategory.Id != Guid.Empty)
                    {
                        var activityTemplateAssignments = new List <ActivityTemplateDO>();

                        if (activityCategoryByName != null)
                        {
                            var existingAssignments = uow.ActivityCategorySetRepository.GetQuery()
                                                      .Where(x => x.ActivityCategoryId == activityCategoryByName.Id)
                                                      .ToList();

                            foreach (var assignment in existingAssignments)
                            {
                                activityTemplateAssignments.Add(assignment.ActivityTemplate);
                                uow.ActivityCategorySetRepository.Remove(assignment);
                            }
                            uow.SaveChanges();

                            uow.ActivityCategoryRepository.Remove(activityCategoryByName);
                            uow.SaveChanges();
                        }

                        var activityCategoryById = uow.ActivityCategoryRepository
                                                   .GetQuery()
                                                   .FirstOrDefault(x => x.Id == activityCategory.Id);

                        if (activityCategoryById == null)
                        {
                            activityCategoryById = new ActivityCategoryDO()
                            {
                                Id       = activityCategory.Id,
                                Name     = activityCategory.Name,
                                IconPath = activityCategory.IconPath,
                                Type     = activityCategory.Type
                            };

                            uow.ActivityCategoryRepository.Add(activityCategoryById);
                        }
                        else
                        {
                            activityCategoryById.IconPath = activityCategory.IconPath;
                            activityCategoryById.Type     = activityCategory.Type;
                        }

                        foreach (var assignedActivityTemplate in activityTemplateAssignments)
                        {
                            uow.ActivityCategorySetRepository.Add(
                                new ActivityCategorySetDO()
                            {
                                Id = Guid.NewGuid(),
                                ActivityCategoryId = activityCategory.Id,
                                ActivityCategory   = activityCategory,
                                ActivityTemplateId = assignedActivityTemplate.Id,
                                ActivityTemplate   = assignedActivityTemplate
                            }
                                );
                        }

                        _activityCategories[activityCategoryById.Id] = Clone(activityCategoryById);

                        uow.SaveChanges();

                        return(activityCategoryById);
                    }
                    else
                    {
                        if (activityCategoryByName == null)
                        {
                            activityCategoryByName = new ActivityCategoryDO()
                            {
                                Id       = Guid.NewGuid(),
                                Name     = activityCategory.Name,
                                IconPath = activityCategory.IconPath,
                                Type     = activityCategory.Type
                            };

                            uow.ActivityCategoryRepository.Add(activityCategoryByName);
                        }
                        else
                        {
                            activityCategoryByName.IconPath = activityCategory.IconPath;
                            activityCategoryByName.Type     = activityCategory.Type;
                        }

                        _activityCategories[activityCategoryByName.Id] = Clone(activityCategoryByName);

                        uow.SaveChanges();

                        return(activityCategoryByName);
                    }
                }
            }
        }