Example #1
0
                                            

        [Test()] 
 public void DeleteListOfPartyTypeTest() 

                                            {
                                                
 PartyTypeManager partyTypeManager = new PartyTypeManager(); 
            try

                                                {
                                                    var partyStatusTypes = new List <PartyStatusType>();
                                                    partyStatusTypes.Add(new PartyStatusType()
                {
                    Name = "Created", Description = ""
                });
                                                    var partyType               = partyTypeManager.Create("partyTypetest", "test", "party type test", partyStatusTypes);
                                                    var partyType2              = partyTypeManager.Create("partyTypetest2", "test2", "party type test2", partyStatusTypes);
                                                    var partyType1Id            = partyType.Id;
                                                    var partyType2Id            = partyType2.Id;
                                                    List <PartyType> partyTypes = new List <PartyType>();
                                                    partyTypes.Add(partyType);
                                                    partyTypes.Add(partyType2);
                                                    partyTypeManager.Delete(partyTypes);
                                                    var partyType1AfterDelete = partyTypeManager.PartyTypeRepository.Get(cc => cc.Id == partyType1Id).FirstOrDefault();
                                                    var partyType2AfterDelete = partyTypeManager.PartyTypeRepository.Get(cc => cc.Id == partyType2Id).FirstOrDefault();
                                                    partyType1AfterDelete.Should().BeNull();
                                                    partyType2AfterDelete.Should().BeNull();
                                                } 
 finally
            {
                                                    partyTypeManager.Dispose();
                                                } 

                                            }
Example #2
0
        private static List <LinkElementModel> createLinkElementModelPartyCustomType(PartyType partyType, LinkElementRootModel rootModel, LinkElementModel parent, MappingManager mappingManager)
        {
            List <LinkElementModel> tmp = new List <LinkElementModel>();

            PartyTypeManager partyTypeManager = new PartyTypeManager();

            try
            {
                foreach (var partyCustomType in partyType.CustomAttributes)
                {
                    long linkElementId = GetId(partyCustomType.Id, LinkElementType.PartyCustomType, mappingManager);

                    LinkElementModel LEModel = new LinkElementModel(
                        linkElementId,
                        partyCustomType.Id,
                        LinkElementType.PartyCustomType, partyCustomType.Name, partyType.Title + "/" + partyCustomType.Name, rootModel.Position, LinkElementComplexity.Simple, partyCustomType.Description);
                    LEModel.Parent = parent;

                    tmp.Add(LEModel);
                }


                return(tmp);
            }
            finally
            {
                partyTypeManager.Dispose();
            }
        }
Example #3
0
                                            [Test()] 
 public void DeleteListOfPartyCustomAttributeTest() 

                                            {
                                                
 PartyTypeManager partyTypeManager = new PartyTypeManager(); 
            try

                                                {
                                                    var partyStatusTypes = new List <PartyStatusType>();
                                                    partyStatusTypes.Add(new PartyStatusType()
                {
                    Name = "Created", Description = ""
                });
                                                    var partyType = partyTypeManager.Create("partyTypetest", "test", "party type test", partyStatusTypes);

                                                    var partyCustomAttr1 = partyTypeManager.CreatePartyCustomAttribute(partyType, "test", "name", "", "", "");
                                                    var partyCustomAttr2 = partyTypeManager.CreatePartyCustomAttribute(partyType, "test2", "name2", "", "", "");

                                                    //cleanup
                                                    var partyCustomAttr1Id = partyCustomAttr1.Id;
                                                    var partyCustomAttr2Id = partyCustomAttr2.Id;
                                                    List <PartyCustomAttribute> partyCustomAttributes = new List <PartyCustomAttribute>();
                                                    partyCustomAttributes.Add(partyCustomAttr1);
                                                    partyCustomAttributes.Add(partyCustomAttr2);
                                                    partyTypeManager.DeletePartyCustomAttribute(partyCustomAttributes);
                                                    partyTypeManager.Delete(partyType);

                                                    //check if it is deleted
                                                    var partyCustomAttr1AfterDelete = partyTypeManager.PartyTypeRepository.Query(cc => cc.Id == partyCustomAttr1Id).FirstOrDefault();
                                                    var partyCustomAttr2AfterDelete = partyTypeManager.PartyTypeRepository.Query(cc => cc.Id == partyCustomAttr2Id).FirstOrDefault();
                                                    partyCustomAttr1AfterDelete.Should().BeNull();
                                                    partyCustomAttr2AfterDelete.Should().BeNull();
                                                } 
 finally
            {
                                                    partyTypeManager.Dispose();
                                                } 

                                            }
Example #4
0
        private static List <LinkElementModel> getChildrenFromPartyType(LinkElementModel model)
        {
            PartyTypeManager partyTypeManager = new PartyTypeManager();

            try
            {
                IEnumerable <PartyCustomAttribute> ptAttr = partyTypeManager.PartyCustomAttributeRepository.Get().Where(p => p.PartyType.Id.Equals(model.ElementId));

                foreach (var attr in ptAttr)
                {
                    model.Children.Add(
                        new LinkElementModel(
                            0,
                            attr.Id,
                            LinkElementType.PartyCustomType, attr.Name, "", model.Position, LinkElementComplexity.Simple, attr.Description)
                        );
                }

                return(model.Children);
            }
            finally
            {
                partyTypeManager.Dispose();
            }
        }
Example #5
0
        internal static Party EditParty(PartyModel partyModel, Dictionary <string, string> partyCustomAttributeValues)
        {
            PartyTypeManager partyTypeManager = new PartyTypeManager();
            PartyManager     partyManager     = new PartyManager();
            var party = new Party();

            try
            {
                var newAddPartyCustomAttrValues = new Dictionary <PartyCustomAttribute, string>();
                party = partyManager.Find(partyModel.Id);
                //Update some fields
                party.Description = partyModel.Description;
                party.StartDate   = partyModel.StartDate.HasValue ? partyModel.StartDate.Value : DateTime.MinValue;
                party.EndDate     = partyModel.EndDate.HasValue ? partyModel.EndDate.Value : DateTime.MaxValue;
                party             = partyManager.Update(party);
                foreach (var partyCustomAttributeValueString in partyCustomAttributeValues)
                {
                    PartyCustomAttribute partyCustomAttribute = partyTypeManager.PartyCustomAttributeRepository.Get(int.Parse(partyCustomAttributeValueString.Key));
                    string value = string.IsNullOrEmpty(partyCustomAttributeValueString.Value) ? "" : partyCustomAttributeValueString.Value;
                    newAddPartyCustomAttrValues.Add(partyCustomAttribute, value);
                }
                partyManager.AddPartyCustomAttributeValues(party, partyCustomAttributeValues.ToDictionary(cc => long.Parse(cc.Key), cc => cc.Value));
            }
            finally
            {
                partyTypeManager?.Dispose();
                partyManager?.Dispose();
            }
            return(party);
        }
Example #6
0
                                            

        [Test()] 
 public void CreateCustomAttributeTest() 

                                            {
                                                
 PartyTypeManager partyTypeManager = new PartyTypeManager(); 
            try

                                                {
                                                    var partyStatusTypes = new List <PartyStatusType>();
                                                    partyStatusTypes.Add(new PartyStatusType()
                {
                    Name = "Created", Description = ""
                });
                                                    var  partyType   = partyTypeManager.Create("partyTypetest", "test", "party type test", partyStatusTypes);
                                                    long partyTypeId = partyType.Id;
                                                    partyType.Should().NotBeNull();
                                                    var  partyCustomAttribute   = partyTypeManager.CreatePartyCustomAttribute(partyType, "string", "Name", "nothing", "validVals", "noCondition", false, false, true);
                                                    long partyCustomAttributeId = partyCustomAttribute.Id;
                                                    partyCustomAttribute.Should().NotBeNull();
                                                    partyCustomAttribute.Id.Should().BeGreaterThan(0);
                                                    var fetchedPartyCustomAttribute = partyTypeManager.PartyCustomAttributeRepository.Get(partyCustomAttribute.Id);
                                                    partyCustomAttribute.Condition.Should().BeEquivalentTo(fetchedPartyCustomAttribute.Condition);
                                                    partyCustomAttribute.DataType.Should().BeEquivalentTo(fetchedPartyCustomAttribute.DataType);
                                                    partyCustomAttribute.DisplayName.Should().BeEquivalentTo(fetchedPartyCustomAttribute.DisplayName);
                                                    partyCustomAttribute.Description.Should().BeEquivalentTo(fetchedPartyCustomAttribute.Description);
                                                    partyCustomAttribute.DisplayOrder.Should().Equals(fetchedPartyCustomAttribute.DisplayOrder);
                                                    partyCustomAttribute.IsMain.Should().Equals(fetchedPartyCustomAttribute.IsMain);
                                                    partyCustomAttribute.IsUnique.Should().Equals(fetchedPartyCustomAttribute.IsUnique);
                                                    partyCustomAttribute.DisplayOrder.Should().Equals(fetchedPartyCustomAttribute.DisplayOrder);
                                                    partyTypeManager.DeletePartyCustomAttribute(partyCustomAttribute);// cleanup the DB
                var partyCustomAttributeAfterDelete = partyTypeManager.PartyCustomAttributeRepository.Get(cc => cc.Id == partyCustomAttributeId).FirstOrDefault();
                                                    partyCustomAttributeAfterDelete.Should().BeNull();
                                                    var objPartyCustomAttribute = new PartyCustomAttribute()
                                                    {
                                                        Condition   = "condition",
                                                        DataType    = "datatype",
                                                        Description = "description"
                                                        ,
                                                        DisplayName     = "displayname",
                                                        DisplayOrder    = 1,
                                                        IsMain          = false,
                                                        IsUnique        = false,
                                                        IsValueOptional = false,
                                                        Name            = "name",
                                                        PartyType       = partyType,
                                                        ValidValues     = "someVals"
                                                    };
                                                    var partyCustomAttributeFromObject        = partyTypeManager.CreatePartyCustomAttribute(objPartyCustomAttribute);
                                                    var fetchedPartyCustomAttributeFromObject = partyTypeManager.PartyCustomAttributeRepository.Get(partyCustomAttributeFromObject.Id);
                                                    partyCustomAttributeFromObject.Condition.Should().BeEquivalentTo(fetchedPartyCustomAttributeFromObject.Condition);
                                                    partyCustomAttributeFromObject.DataType.Should().BeEquivalentTo(fetchedPartyCustomAttributeFromObject.DataType);
                                                    partyCustomAttributeFromObject.DisplayName.Should().BeEquivalentTo(fetchedPartyCustomAttributeFromObject.DisplayName);
                                                    partyCustomAttributeFromObject.Description.Should().BeEquivalentTo(fetchedPartyCustomAttributeFromObject.Description);
                                                    partyCustomAttributeFromObject.DisplayOrder.Should().Equals(fetchedPartyCustomAttributeFromObject.DisplayOrder);
                                                    partyCustomAttributeFromObject.IsMain.Should().Equals(fetchedPartyCustomAttributeFromObject.IsMain);
                                                    partyCustomAttributeFromObject.IsUnique.Should().Equals(fetchedPartyCustomAttributeFromObject.IsUnique);
                                                    partyCustomAttributeFromObject.DisplayOrder.Should().Equals(fetchedPartyCustomAttributeFromObject.DisplayOrder);
                                                    partyTypeManager.DeletePartyCustomAttribute(partyCustomAttributeFromObject);// cleanup the DB
                partyTypeManager.Delete(partyType);// 
                var partyTypeAfterDelete = partyTypeManager.PartyTypeRepository.Get(cc => cc.Id == partyTypeId).FirstOrDefault();
                                                    partyTypeAfterDelete.Should().BeNull();
                                                } 
 finally
            {
                                                    partyTypeManager.Dispose();
                                                } 

                                            }
Example #7
0
        public static string GetValueFromSystem(long partyid, long targetElementId, LinkElementType targetElementType)
        {
            MappingManager   _mappingManager  = new MappingManager();
            PartyTypeManager partyTypeManager = new PartyTypeManager();
            PartyManager     partyManager     = new PartyManager();

            try
            {
                using (IUnitOfWork uow = (new object()).GetUnitOfWork())
                {
                    string value = "";

                    IList <Entities.Mapping.Mapping> mapping = CachedMappings();
                    var mapping_result = mapping.Where(m =>
                                                       m.Target.ElementId.Equals(targetElementId) &&
                                                       m.Target.Type.Equals(targetElementType) &&
                                                       m.Source.Type.Equals(LinkElementType.PartyCustomType)
                                                       ).ToList();

                    if (mapping_result.Any())
                    {
                        string mask = "";
                        mask = mapping_result.FirstOrDefault().TransformationRule.Mask;

                        foreach (var mapping_element in mapping_result)
                        {
                            long attributeId = mapping_element.Source.ElementId;

                            PartyCustomAttributeValue attrValue =
                                partyManager.PartyCustomAttributeValueRepository.Query()
                                .Where(v => v.CustomAttribute.Id.Equals(attributeId) && v.Party.Id.Equals(partyid))
                                .FirstOrDefault();

                            if (attrValue != null)
                            {
                                List <string> regExResultList = transform(attrValue.Value, mapping_element.TransformationRule);
                                string        placeHolderName = attrValue.CustomAttribute.Name;

                                mask = setOrReplace(mask, regExResultList, placeHolderName);
                            }
                        }

                        if (mask.ToLower().Contains(value.ToLower()))
                        {
                            return(mask);
                        }
                    }
                }

                return("");
            }
            finally
            {
                _mappingManager.Dispose();
                partyTypeManager.Dispose();
                partyManager.Dispose();
            }
        }
Example #8
0
        public ActionResult Edit(bool relationTabAsDefault = false)
        {
            PartyManager     partyManager     = null;
            PartyTypeManager partyTypeManager = null;
            UserManager      userManager      = null;

            try
            {
                partyManager     = new PartyManager();
                partyTypeManager = new PartyTypeManager();
                userManager      = new UserManager();
                var user = userManager.FindByNameAsync(HttpContext.User?.Identity?.Name).Result;
                if (user == null)
                {
                    return(RedirectToAction("Index", "Home", new { area = "" }));
                }
                ViewBag.Title = PresentationModel.GetGenericViewTitle("Edit Party");
                var model = new PartyModel();
                model.PartyTypeList = partyTypeManager.PartyTypeRepository.Get().ToList();
                Party party = partyManager.GetPartyByUser(user.Id);
                if (party == null)
                {
                    return(RedirectToAction("UserRegistration", "PartyService", new { area = "bam" }));
                }
                model.Description = party.Description;
                model.Id          = party.Id;
                model.PartyType   = party.PartyType;
                //Set dates to null to not showing the minimum and maximum dates in UI
                if (party.StartDate == DateTime.MinValue)
                {
                    model.StartDate = null;
                }
                else
                {
                    model.StartDate = party.StartDate;
                }
                if (party.EndDate.Date == DateTime.MaxValue.Date)
                {
                    model.EndDate = null;
                }
                else
                {
                    model.EndDate = party.EndDate;
                }
                model.Name = party.Name;
                ViewBag.RelationTabAsDefault = false;
                ViewBag.Title = "Edit party";

                return(View(model));
            }
            finally
            {
                partyManager?.Dispose();
                partyTypeManager?.Dispose();
                userManager?.Dispose();
            }
        }
Example #9
0
        public ActionResult CreateEdit(int id, bool relationTabAsDefault = false)
        {
            PartyManager     partyManager     = null;
            PartyTypeManager partyTypeManager = null;

            try
            {
                partyManager     = new PartyManager();
                partyTypeManager = new PartyTypeManager();
                ViewBag.Title    = PresentationModel.GetGenericViewTitle("Edit Party");
                var model = new PartyModel();
                model.PartyTypeList      = partyTypeManager.PartyTypeRepository.Get(cc => !cc.SystemType).ToList();
                model.PartyRelationships = getPartyRelationships(id);
                Party party = partyManager.PartyRepository.Get(id);
                model.Description = party.Description;
                model.Id          = party.Id;
                model.PartyType   = party.PartyType;
                model.Name        = party.Name;
                //Set dates to null to not showing the minimum and maximum dates in UI
                if (party.StartDate == DateTime.MinValue)
                {
                    model.StartDate = null;
                }
                else
                {
                    model.StartDate = party.StartDate;
                }
                if (party.EndDate.Date == DateTime.MaxValue.Date)
                {
                    model.EndDate = null;
                }
                else
                {
                    model.EndDate = party.EndDate;
                }
                ViewBag.RelationTabAsDefault = relationTabAsDefault;
                ViewBag.Title = "Edit party";
                return(View("CreateEdit", model));
            }
            finally
            {
                partyManager?.Dispose();
                partyTypeManager?.Dispose();
            }
        }
Example #10
0
        public ActionResult CreateUserParty(Party party, Dictionary <string, string> partyCustomAttributeValues, List <PartyRelationship> partyRelationships)
        {
            PartyTypeManager             partyTypeManager         = null;
            PartyManager                 partyManager             = null;
            PartyRelationshipTypeManager partyRelationshipManager = null;
            UserManager userManager = null;

            try
            {
                //check if the party blongs to the user
                //Bind party if there is already a user associated to this party

                userManager              = new UserManager();
                partyTypeManager         = new PartyTypeManager();
                partyManager             = new PartyManager();
                partyRelationshipManager = new PartyRelationshipTypeManager();
                var partyType       = partyTypeManager.PartyTypeRepository.Get(party.PartyType.Id);
                var partyStatusType = partyTypeManager.GetStatusType(partyType, "Created");
                //Create party
                party = partyManager.Create(partyType, party.Description, null, null, partyCustomAttributeValues.ToDictionary(cc => long.Parse(cc.Key), cc => cc.Value));
                if (partyRelationships != null)
                {
                    foreach (var partyRelationship in partyRelationships)
                    {
                        //the duration is from current datetime up to the end of target party date
                        var secondParty           = partyManager.PartyRepository.Get(partyRelationship.SecondParty.Id);
                        var partyRelationshipType = partyRelationshipManager.PartyRelationshipTypeRepository.Get(partyRelationship.PartyRelationshipType.Id);
                        var partyTypePair         = partyRelationshipManager.PartyTypePairRepository.Get(partyRelationship.PartyTypePair.Id);
                        partyManager.AddPartyRelationship(party, secondParty, partyRelationshipType, partyRelationship.Title, partyRelationship.Description, partyTypePair, DateTime.Now, secondParty.EndDate, partyRelationship.Scope);
                    }
                }
                var userTask = userManager.FindByNameAsync(HttpContext.User.Identity.Name);
                userTask.Wait();
                var user = userTask.Result;
                partyManager.AddPartyUser(party, user.Id);
                return(RedirectToAction("Index"));
            }
            finally
            {
                partyTypeManager?.Dispose();
                partyManager?.Dispose();
                partyRelationshipManager?.Dispose();
            }
        }
Example #11
0
        public ActionResult Create()
        {
            PartyTypeManager partyTypeManager = null;

            try
            {
                partyTypeManager = new PartyTypeManager();
                ViewBag.Title    = PresentationModel.GetGenericViewTitle("Create Party");
                var model = new PartyModel();
                model.PartyTypeList          = partyTypeManager.PartyTypeRepository.Get().ToList();
                ViewBag.RelationTabAsDefault = false;
                ViewBag.Title = "Create party";
                return(View("CreateEdit", model));
            }
            finally
            {
                partyTypeManager?.Dispose();
            }
        }
Example #12
0
        public ActionResult View(int id)
        {
            PartyManager     partyManager     = null;
            PartyTypeManager partyTypeManager = null;

            try
            {
                partyManager     = new PartyManager();
                partyTypeManager = new PartyTypeManager();
                ViewBag.Title    = PresentationModel.GetGenericViewTitle("View Party");
                var model = new PartyModel();
                model.PartyTypeList      = partyTypeManager.PartyTypeRepository.Get().ToList();
                model.PartyRelationships = getPartyRelationships(id);
                Party party = partyManager.PartyRepository.Get(id);
                model.Description = party.Description;
                model.PartyType   = party.PartyType;
                model.Id          = party.Id;
                model.Name        = party.Name;
                if (party.StartDate == DateTime.MinValue)
                {
                    model.StartDate = null;
                }
                else
                {
                    model.StartDate = party.StartDate;
                }
                if (party.EndDate.Date == DateTime.MaxValue.Date)
                {
                    model.EndDate = null;
                }
                else
                {
                    model.EndDate = party.EndDate;
                }
                ViewBag.Title = "View party";
                return(View(model));
            }
            finally
            {
                partyManager?.Dispose();
                partyTypeManager?.Dispose();
            }
        }
Example #13
0
                                            public void UpdateCustomAttributeTest() 

                                            {
                                                
 PartyTypeManager partyTypeManager = new PartyTypeManager();

                                                try
                                                {
                                                    var partyStatusTypes = new List <PartyStatusType>();
                                                    partyStatusTypes.Add(new PartyStatusType()
                {
                    Name = "Created", Description = ""
                });
                                                    var partyType        = partyTypeManager.Create("partyTypetest", "test", "party type test", partyStatusTypes);
                                                    var partyType2       = partyTypeManager.Create("partyTypetest2", "test2", "party type test", partyStatusTypes);
                                                    var partyCustomAttr1 = partyTypeManager.CreatePartyCustomAttribute(partyType, "test", "name", "", "", "", false, true, true, 1);
                                                    partyCustomAttr1.DataType        = "test3";
                                                    partyCustomAttr1.Name            = "otherName";
                                                    partyCustomAttr1.Description     = "desc";
                                                    partyCustomAttr1.ValidValues     = "test3";
                                                    partyCustomAttr1.DisplayName     = "test 3";
                                                    partyCustomAttr1.DisplayOrder    = 2;
                                                    partyCustomAttr1.IsMain          = true;
                                                    partyCustomAttr1.IsUnique        = true;
                                                    partyCustomAttr1.IsValueOptional = false;
                                                    partyCustomAttr1.PartyType       = partyType2;
                                                    partyTypeManager.UpdatePartyCustomAttribute(partyCustomAttr1);
                                                    var updatedPartyCustomAttr = partyTypeManager.PartyCustomAttributeRepository.Get(partyCustomAttr1.Id);
                                                    partyCustomAttr1.Condition.Should().BeEquivalentTo(updatedPartyCustomAttr.Condition);
                                                    partyCustomAttr1.DataType.Should().BeEquivalentTo(updatedPartyCustomAttr.DataType);
                                                    partyCustomAttr1.DisplayName.Should().BeEquivalentTo(updatedPartyCustomAttr.DisplayName);
                                                    partyCustomAttr1.Description.Should().BeEquivalentTo(updatedPartyCustomAttr.Description);
                                                    partyCustomAttr1.DisplayOrder.Should().Equals(updatedPartyCustomAttr.DisplayOrder);
                                                    partyCustomAttr1.IsMain.Should().Equals(updatedPartyCustomAttr.IsMain);
                                                    partyCustomAttr1.IsUnique.Should().Equals(updatedPartyCustomAttr.IsUnique);
                                                    partyCustomAttr1.DisplayOrder.Should().Equals(updatedPartyCustomAttr.DisplayOrder);
                                                    partyTypeManager.DeletePartyCustomAttribute(updatedPartyCustomAttr);
                                                    partyTypeManager.Delete(partyType);
                                                }
                                                finally
                                                {
                                                    partyTypeManager.Dispose();
                                                }
                                            }
Example #14
0
        internal static Party CreateParty(PartyModel partyModel, Dictionary <string, string> partyCustomAttributeValues)
        {
            PartyTypeManager partyTypeManager = new PartyTypeManager();
            PartyManager     partyManager     = new PartyManager();
            var party = new Party();

            try
            {
                PartyType partyType       = partyTypeManager.PartyTypeRepository.Get(partyModel.PartyType.Id);
                var       partyStatusType = partyTypeManager.GetStatusType(partyType, "Created");
                // save party as temp if the reationships are required
                var requiredPartyRelationTypes = new PartyRelationshipTypeManager().GetAllPartyRelationshipTypes(partyType.Id).Where(cc => cc.MinCardinality > 0);
                //Create party
                party = partyManager.Create(partyType, "", partyModel.Description, partyModel.StartDate, partyModel.EndDate, partyStatusType, requiredPartyRelationTypes.Any());
                partyManager.AddPartyCustomAttributeValues(party, partyCustomAttributeValues.ToDictionary(cc => long.Parse(cc.Key), cc => cc.Value));
            }
            finally
            {
                partyTypeManager?.Dispose();
                partyManager?.Dispose();
            }
            return(party);
        }
Example #15
0
                                            

        [Test()] 
 public void CreatePartyTypeTest() 

                                            {
                                                
 PartyTypeManager partyTypeManager = new PartyTypeManager(); 
            try

                                                {
                                                    var partyStatusTypes = new List <PartyStatusType>();
                                                    partyStatusTypes.Add(new PartyStatusType()
                {
                    Name = "Created", Description = ""
                });
                                                    var  partyType   = partyTypeManager.Create("partyTypetest", "test", "party type test", partyStatusTypes);
                                                    long partyTypeId = partyType.Id;
                                                    partyType.Should().NotBeNull();
                                                    partyType.Id.Should().BeGreaterThan(0);
                                                    var fetchedPartyType = partyTypeManager.PartyTypeRepository.Get(partyType.Id);
                                                    partyType.Title.Should().BeEquivalentTo(fetchedPartyType.Title);
                                                    partyType.DisplayName.Should().BeEquivalentTo(fetchedPartyType.DisplayName);
                                                    partyType.Description.Should().BeEquivalentTo(fetchedPartyType.Description);
                                                    partyTypeManager.Delete(partyType);// cleanup the DB
                var partyTypeAfterDelete = partyTypeManager.PartyTypeRepository.Get(cc => cc.Id == partyTypeId).FirstOrDefault();
                                                    partyTypeAfterDelete.Should().BeNull();
                                                } 
 finally
            {
                                                    partyTypeManager.Dispose();
                                                } 

                                            }
Example #16
0
        /// <summary>
        /// Update rules:
        /// Comparison for update is by the title of elements: title of elements are not editable
        /// if title of an element is changed because remove is forbiden here ,  it adds it as a new element and the old one will remain there
        ///
        /// </summary>
        private void ImportPartyTypes()
        {
            PartyTypeManager             partyTypeManager             = null;
            PartyManager                 partyManager                 = null;
            PartyRelationshipTypeManager partyRelationshipTypeManager = null;

            try
            {
                partyTypeManager             = new PartyTypeManager();
                partyManager                 = new PartyManager();
                partyRelationshipTypeManager = new PartyRelationshipTypeManager();
                var         filePath = Path.Combine(AppConfiguration.GetModuleWorkspacePath("BAM"), "partyTypes.xml");
                XDocument   xDoc     = XDocument.Load(filePath);
                XmlDocument xmlDoc   = new XmlDocument();
                xmlDoc.Load(xDoc.CreateReader());
                var partyTypesNodeList = xmlDoc.SelectNodes("//PartyTypes");

                var deleteAbleAttr       = new List <PartyCustomAttribute>();
                var deleteAbleAttrValues = new List <PartyCustomAttributeValue>();

                if (partyTypesNodeList.Count > 0)
                {
                    foreach (XmlNode partyTypeNode in partyTypesNodeList[0].ChildNodes)
                    {
                        if (!(partyTypeNode is XmlElement))
                        {
                            continue;
                        }

                        //Convert xmAttributeCollection to list to skipt the case sensitive and null problems
                        var attributes = new List <XmlAttribute>();
                        foreach (XmlAttribute att in partyTypeNode.Attributes)
                        {
                            attributes.Add(att);
                        }
                        var title       = GetAttributeValue(attributes, "Name", true);
                        var displayName = GetAttributeValue(attributes, "DisplayName", false);
                        var systemType  = GetAttributeValue(attributes, "SystemType", true);
                        var partyType   = partyTypeManager.PartyTypeRepository.Get(item => item.Title == title).FirstOrDefault();
                        //If there is not such a party type
                        if (partyType == null)
                        {
                            var partyStatusTypes = new List <PartyStatusType>();
                            partyStatusTypes.Add(new PartyStatusType()
                            {
                                Name = "Created", Description = ""
                            });
                            partyType = partyTypeManager.Create(title, "Imported from partyTypes.xml", displayName, partyStatusTypes, (systemType == null ? false : Convert.ToBoolean(systemType)));
                            var customAttrs = new List <PartyCustomAttribute>();
                            foreach (XmlNode customAttrNode in partyTypeNode.ChildNodes)
                            {
                                if (!(customAttrNode is XmlElement))
                                {
                                    continue;
                                }

                                var customAttrNodeAttributes = new List <XmlAttribute>();
                                foreach (XmlAttribute att in customAttrNode.Attributes)
                                {
                                    customAttrNodeAttributes.Add(att);
                                }
                                PartyCustomAttribute partyCustomAttr = ParsePartyCustomAttribute(customAttrNodeAttributes);

                                customAttrs.Add(new PartyCustomAttribute()
                                {
                                    DataType        = partyCustomAttr.DataType,
                                    Description     = partyCustomAttr.Description,
                                    IsMain          = partyCustomAttr.IsMain,
                                    IsUnique        = partyCustomAttr.IsUnique,
                                    IsValueOptional = partyCustomAttr.IsValueOptional,
                                    Name            = partyCustomAttr.Name,
                                    PartyType       = partyType,
                                    ValidValues     = partyCustomAttr.ValidValues,
                                    DisplayName     = partyCustomAttr.DisplayName,
                                    Condition       = partyCustomAttr.Condition
                                });
                            }

                            if (!customAttrs.Any(c => c.IsMain))
                            {
                                customAttrs[0].IsMain = true;
                            }

                            foreach (var customAttr in customAttrs)
                            {
                                partyTypeManager.CreatePartyCustomAttribute(customAttr);
                            }
                        }
                        else //partytype exist
                        {
                            var newCustomAttrs      = new List <PartyCustomAttribute>();
                            var existingCustomAttrs = new List <PartyCustomAttribute>();

                            foreach (XmlNode customAttrNode in partyTypeNode.ChildNodes)
                            {
                                if (!(customAttrNode is XmlElement))
                                {
                                    continue;
                                }

                                var attributesList = new List <XmlAttribute>();
                                foreach (XmlAttribute att in customAttrNode.Attributes)
                                {
                                    attributesList.Add(att);
                                }

                                var customAttrName = GetAttributeValue(attributesList, "Name", true);
                                //create new custom attribute if there is not such a name
                                if (!partyType.CustomAttributes.Any(item => item.Name == customAttrName))
                                {
                                    var customAttrNodeAttributes = new List <XmlAttribute>();
                                    foreach (XmlAttribute att in customAttrNode.Attributes)
                                    {
                                        customAttrNodeAttributes.Add(att);
                                    }

                                    PartyCustomAttribute partyCustomAttr = ParsePartyCustomAttribute(customAttrNodeAttributes);
                                    newCustomAttrs.Add(new PartyCustomAttribute()
                                    {
                                        DataType        = partyCustomAttr.DataType,
                                        Description     = partyCustomAttr.Description,
                                        IsMain          = partyCustomAttr.IsMain,
                                        IsUnique        = partyCustomAttr.IsUnique,
                                        IsValueOptional = partyCustomAttr.IsValueOptional,
                                        Name            = customAttrName,
                                        PartyType       = partyType,
                                        ValidValues     = partyCustomAttr.ValidValues,
                                        DisplayName     = partyCustomAttr.DisplayName,
                                        Condition       = partyCustomAttr.Condition
                                    });
                                }
                                else //update if exist
                                {
                                    //add to existingCustomAttr list
                                    var existingAttr = partyType.CustomAttributes.Where(item => item.Name == customAttrName).FirstOrDefault();
                                    if (existingAttr != null)
                                    {
                                        existingCustomAttrs.Add(existingAttr);
                                    }
                                }
                            }// end foreach customAttrNode

                            if (!newCustomAttrs.Any(c => c.IsMain) && !partyType.CustomAttributes.Any(c => c.IsMain))
                            {
                                throw new Exception("There is no main field. Each party type needs at least one main field.");
                            }

                            // create all custom Attr´s
                            foreach (var customAttr in newCustomAttrs)
                            {
                                partyTypeManager.CreatePartyCustomAttribute(customAttr);
                            }

                            // Delete all attrs that are no longer in the partytype.xml
                            newCustomAttrs.AddRange(existingCustomAttrs);
                            var currentListOfAttr = partyType.CustomAttributes;

                            foreach (var attr in currentListOfAttr)
                            {
                                if (!newCustomAttrs.Any(a => a.Id.Equals(attr.Id)))
                                {
                                    deleteAbleAttr.Add(attr);
                                    //select all value that are created based on the attr
                                    // the values need to delete befor the attr itself
                                    deleteAbleAttrValues.AddRange(
                                        partyManager.PartyCustomAttributeValueRepository.Query()
                                        .Where(v => v.CustomAttribute.Id.Equals(attr.Id)));
                                }
                            }
                        }
                    }
                }
                var partyRelationshipTypesNodeList = xmlDoc.SelectNodes("//PartyRelationshipTypes");
                if (partyRelationshipTypesNodeList.Count > 0)
                {
                    foreach (XmlNode partyRelationshipTypesNode in partyRelationshipTypesNodeList[0].ChildNodes)
                    {
                        if (!(partyRelationshipTypesNode is XmlElement))
                        {
                            continue;
                        }

                        var customAttrNodeAttributes = new List <XmlAttribute>();
                        foreach (XmlAttribute att in partyRelationshipTypesNode.Attributes)
                        {
                            customAttrNodeAttributes.Add(att);
                        }

                        var title              = GetAttributeValue(customAttrNodeAttributes, "Name", true);
                        var displayName        = GetAttributeValue(customAttrNodeAttributes, "DisplayName", false);
                        var description        = GetAttributeValue(customAttrNodeAttributes, "Description", false);
                        var indicatesHierarchy = GetAttributeValue(customAttrNodeAttributes, "IndicatesHierarchy", true); // false;
                        var maxCardinality     = GetAttributeValue(customAttrNodeAttributes, "MaxCardinality", true);     // -1
                        var minCardinality     = GetAttributeValue(customAttrNodeAttributes, "MinCardinality", true);     // 0

                        //Import party type pairs
                        var partyTypePairs = new List <PartyTypePair>();
                        foreach (XmlNode partyTypesPairNode in partyRelationshipTypesNode.ChildNodes[0].ChildNodes)
                        {
                            var partyTypesPairNodeAttributes = new List <XmlAttribute>();
                            foreach (XmlAttribute att in partyTypesPairNode.Attributes)
                            {
                                partyTypesPairNodeAttributes.Add(att);
                            }
                            var allowedSourceTitle = GetAttributeValue(partyTypesPairNodeAttributes, "SourceType", true);
                            var allowedTargetTitle = GetAttributeValue(partyTypesPairNodeAttributes, "TargetType", true);
                            var allowedSource      = partyTypeManager.PartyTypeRepository.Get(item => item.Title.ToLower() == allowedSourceTitle.ToLower()).FirstOrDefault();
                            if (allowedSource == null)
                            {
                                throw new Exception("Error in importing party relationship types ! \r\n " + allowedSourceTitle + " is not a party type!!");
                            }
                            var allowedTarget = partyTypeManager.PartyTypeRepository.Get(item => item.Title.ToLower() == allowedTargetTitle.ToLower()).FirstOrDefault();
                            if (allowedTarget == null)
                            {
                                throw new Exception("Error in importing party relationship types ! \r\n " + allowedTargetTitle + " is not a party type!!");
                            }

                            var typePairTitle       = GetAttributeValue(partyTypesPairNodeAttributes, "Title", true);
                            var typePairDescription = GetAttributeValue(partyTypesPairNodeAttributes, "Description", false);
                            var typePairDefault     = GetAttributeValue(partyTypesPairNodeAttributes, "Default", true);
                            var conditionSource     = GetAttributeValue(partyTypesPairNodeAttributes, "conditionSource", false);
                            var conditionTarget     = GetAttributeValue(partyTypesPairNodeAttributes, "conditionTarget", false);
                            var permissionsTemplate = GetAttributeValue(partyTypesPairNodeAttributes, "permissionsTemplate", false);
                            partyTypePairs.Add(new PartyTypePair()
                            {
                                SourcePartyType = allowedSource,
                                TargetPartyType = allowedTarget,
                                Description     = typePairDescription,
                                Title           = typePairTitle,
                                PartyRelationShipTypeDefault = typePairDefault == null ? true : Convert.ToBoolean(typePairDefault),
                                ConditionSource    = conditionSource,
                                ConditionTarget    = conditionTarget,
                                PermissionTemplate = Helper.GetPermissionValue(permissionsTemplate)
                            });
                        }

                        var partyRelationshipType = partyRelationshipTypeManager.PartyRelationshipTypeRepository.Get(item => item.Title == title).FirstOrDefault();
                        //If there is not such a party relationship type
                        //It is mandatory to create at least one party type pair when we are creating a party type relation
                        //
                        if (partyRelationshipType == null)
                        {
                            partyRelationshipType = partyRelationshipTypeManager.Create(title, displayName, description, (indicatesHierarchy == null ? false : Convert.ToBoolean(indicatesHierarchy)), maxCardinality == null ? -1 : int.Parse(maxCardinality), minCardinality == null ? 0 : int.Parse(minCardinality), partyTypePairs.First().PartyRelationShipTypeDefault, partyTypePairs.First().SourcePartyType, partyTypePairs.First().TargetPartyType,
                                                                                        partyTypePairs.First().Title, partyTypePairs.First().Description, partyTypePairs.First().ConditionSource, partyTypePairs.First().ConditionTarget, partyTypePairs.First().PermissionTemplate);
                        }
                        else
                        {
                            partyRelationshipType = partyRelationshipTypeManager.Update(partyRelationshipType.Id, title, "", description, (indicatesHierarchy == null ? false : Convert.ToBoolean(indicatesHierarchy)), maxCardinality == null ? -1 : int.Parse(maxCardinality), minCardinality == null ? 0 : int.Parse(minCardinality));
                            UpdateOrCreatePartyTypePair(partyTypePairs.First(), partyRelationshipType, partyRelationshipTypeManager);
                        }
                        //If there are more than one partyTypepair exist
                        //if (partyTypePairs.Count() > 1)
                        foreach (var partyTypePair in partyTypePairs.Where(item => item != partyTypePairs.First()))
                        {
                            UpdateOrCreatePartyTypePair(partyTypePair, partyRelationshipType, partyRelationshipTypeManager);//
                        }
                    }
                }
                //Add all the custom Attribute names ao custom grid column of default user
                foreach (var partyType in partyTypeManager.PartyTypeRepository.Get(cc => !cc.SystemType))
                {
                    foreach (var partyCustomAttr in partyType.CustomAttributes)
                    {
                        partyManager.UpdateOrAddPartyGridCustomColumn(partyType, partyCustomAttr, null);
                    }
                    var partyRelationshipTypePairs = partyRelationshipTypeManager.PartyTypePairRepository.Get(cc => cc.SourcePartyType.Id == partyType.Id && !cc.TargetPartyType.SystemType);
                    foreach (var partyTypePair in partyRelationshipTypePairs)
                    {
                        partyManager.UpdateOrAddPartyGridCustomColumn(partyType, null, partyTypePair);
                    }
                }

                if (deleteAbleAttr.Any())
                {
                    //delete all existing PartyCustomAttrValues
                    deleteAbleAttrValues.ForEach(a => partyManager.RemovePartyCustomAttributeValue(a));

                    // Delete all GridColumns of the CustomAttribute
                    var listOfIds         = deleteAbleAttr.Select(d => d.Id);
                    var gridColumns       = partyManager.PartyCustomGridColumnsRepository.Get();
                    var listOfGridColumns = gridColumns.Where(c => c.CustomAttribute != null && listOfIds.Contains(c.CustomAttribute.Id)).ToList();

                    listOfGridColumns.ForEach(c => partyManager.RemovePartyGridCustomColumn(c.Id));

                    // add CustomAttribute Grid Columns
                    deleteAbleAttr.ForEach(a => partyTypeManager.DeletePartyCustomAttribute(a));
                }
            }
            catch (Exception ex)
            {
                LoggerFactory.LogCustom("SeedData Failed: " + ex.Message);
                throw;
            }
            finally
            {
                partyManager?.Dispose();
                partyTypeManager?.Dispose();
                partyRelationshipTypeManager?.Dispose();
            }
        }
Example #17
0
        public ActionResult UserRegistration()
        {
            PartyManager                 partyManager                 = null;
            PartyTypeManager             partyTypeManager             = null;
            PartyRelationshipTypeManager partyRelationshipTypeManager = null;
            UserManager userManager = null;

            try
            {
                if (!HttpContext.User.Identity.IsAuthenticated)
                {
                    return(RedirectToAction("Index", "Home"));
                }
                //Defined AccountPartyTypes vallue in web config format is like PartyType1:PartyTypePairTitle1-PartyTypePairTitle2,PartyType2
                var accountPartyTypes     = new List <string>();
                var partyTypeAccountModel = new PartyTypeAccountModel();
                partyManager                 = new PartyManager();
                partyTypeManager             = new PartyTypeManager();
                partyRelationshipTypeManager = new PartyRelationshipTypeManager();
                userManager = new UserManager();
                var allowedAccountPartyTypes = GetPartyTypesForAccount();
                if (allowedAccountPartyTypes == null)
                {
                    throw new Exception("Allowed party types for registration in setting.xml are not exist!");
                }
                //Split them by "," and split each one by ":"
                foreach (var allowedAccountPartyType in allowedAccountPartyTypes)
                {
                    var partyType = partyTypeManager.PartyTypeRepository.Get(item => item.Title == allowedAccountPartyType.Key).FirstOrDefault();
                    if (partyType == null)
                    {
                        throw new Exception("AccountPartyType format in app setting is not correct or this 'partyType' doesn't exist.");
                    }
                    var allowedPartyTypePairs = new Dictionary <string, PartyTypePair>();
                    if (allowedAccountPartyType.Value != null)
                    {
                        var partyRelationshipsType = partyRelationshipTypeManager.PartyRelationshipTypeRepository.Get(item => allowedAccountPartyType.Value.Contains(item.Title));
                        foreach (var partyRelationshipType in partyRelationshipsType)
                        {
                            //filter AssociatedPairs to allowed pairs
                            partyRelationshipType.AssociatedPairs = partyRelationshipType.AssociatedPairs.Where(item => partyType.Id == item.SourcePartyType.Id && item.TargetPartyType.Parties.Any()).ToList();
                            //try to find first type pair which has PartyRelationShipTypeDefault otherwise the first one
                            var defaultPartyTypePair = partyRelationshipType.AssociatedPairs.FirstOrDefault(item => item.PartyRelationShipTypeDefault);

                            if (defaultPartyTypePair == null)
                            {
                                defaultPartyTypePair = partyRelationshipType.AssociatedPairs.FirstOrDefault();
                            }
                            if (defaultPartyTypePair != null)
                            {
                                if (defaultPartyTypePair.TargetPartyType.Parties != null)
                                {
                                    defaultPartyTypePair.TargetPartyType.Parties = defaultPartyTypePair.TargetPartyType.Parties.OrderBy(item => item.Name).ToList(); // order parties by name
                                }
                                allowedPartyTypePairs.Add(partyRelationshipType.DisplayName, defaultPartyTypePair);
                            }
                        }
                    }
                    partyTypeAccountModel.PartyRelationshipsTypes.Add(partyType, allowedPartyTypePairs);
                }
                //Bind party if there is already a user associated to this party
                var userTask = userManager.FindByNameAsync(HttpContext.User.Identity.Name);
                userTask.Wait();
                var user = userTask.Result;
                partyTypeAccountModel.Party = partyManager.GetPartyByUser(user.Id);
                //TODO: Discuss . Current soloution is to navigate the user to edit party
                if (partyTypeAccountModel.Party != null)
                {
                    return(RedirectToAction("Edit"));
                }
                return(View("_userRegisterationPartial", partyTypeAccountModel));
            }
            finally
            {
                partyManager?.Dispose();
                partyTypeManager?.Dispose();
                partyRelationshipTypeManager?.Dispose();
                userManager?.Dispose();
            }
        }
Example #18
0
        public static LinkElementRootModel LoadfromSystem(LinkElementPostion rootModelType, MappingManager mappingManager)
        {
            //get all parties - complex
            PartyTypeManager partyTypeManager = new PartyTypeManager();

            try
            {
                LinkElementRootModel model = new LinkElementRootModel(LinkElementType.System, 0, "System", rootModelType);

                LinkElement SystemRoot = mappingManager.GetLinkElement(0, LinkElementType.System);

                long id        = 0;
                long elementId = 0;
                if (SystemRoot != null)
                {
                    id        = SystemRoot.Id;
                    elementId = SystemRoot.ElementId;
                }


                LinkElementModel LEParent = new LinkElementModel(
                    id,
                    elementId,
                    LinkElementType.System,
                    "System", "",
                    rootModelType,
                    LinkElementComplexity.Complex,
                    "");



                IEnumerable <PartyType> partyTypes = partyTypeManager.PartyTypeRepository.Get();

                foreach (var pt in partyTypes)
                {
                    LinkElementModel ptModel = createLinkElementModelType(pt, model, LEParent, mappingManager);
                    model.LinkElements.Add(ptModel);
                    //get all partyCustomTypeAttr -> simple
                    model.LinkElements.AddRange(createLinkElementModelPartyCustomType(pt, model, ptModel, mappingManager));
                }

                //get all keys -> simple
                foreach (Key value in Key.GetValues(typeof(Key)))
                {
                    long linkElementId = GetId((int)value, LinkElementType.Key, mappingManager);
                    //string mask = GetMask((int)value, LinkElementType.Key);

                    LinkElementModel LEModel = new LinkElementModel(
                        linkElementId,
                        (int)value,
                        LinkElementType.Key, value.ToString(), "", model.Position, LinkElementComplexity.Simple, "");

                    LEModel.Parent = LEParent;

                    model.LinkElements.Add(LEModel);
                }

                //create container
                model = CreateLinkElementContainerModels(model);

                return(model);
            }
            finally
            {
                partyTypeManager.Dispose();
            }
        }