public void Update(coreModel.Organization[] organizations)
        {
            var pkMap = new PrimaryKeyResolvingMap();
            using (var repository = _repositoryFactory())
            using (var changeTracker = GetChangeTracker(repository))
            {
                foreach (var organization in organizations)
                {
                    var sourceEntity = organization.ToDataModel(pkMap);
                    var targetEntity = repository.GetOrganizationById(organization.Id);

                    if (targetEntity == null)
                    {
                        throw new NullReferenceException("targetEntity");
                    }

                    changeTracker.Attach(targetEntity);
                    sourceEntity.Patch(targetEntity);
                }

                CommitChanges(repository);
                pkMap.ResolvePrimaryKeys();
            }

            foreach (var organization in organizations)
            {
                _dynamicPropertyService.SaveDynamicPropertyValues(organization);
            }
        }
        public void Update(coreModel.Contact[] contacts)
        {
            var pkMap = new PrimaryKeyResolvingMap();

            using (var repository = _repositoryFactory())
            using (var changeTracker = GetChangeTracker(repository))
            {
                foreach (var contact in contacts)
                {
                    var targetEntity = repository.GetContactById(contact.Id);
                    if (targetEntity != null)
                    {
                        changeTracker.Attach(targetEntity);

                        var sourceEntity = contact.ToDataModel(pkMap);
                        sourceEntity.Patch(targetEntity);

                        _dynamicPropertyService.SaveDynamicPropertyValues(contact);
                    }
                }

                CommitChanges(repository);
                pkMap.ResolvePrimaryKeys();
            }
        }
		public coreModel.Contact Create(coreModel.Contact contact)
		{
			var entity = contact.ToFoundation();
			coreModel.Contact retVal = null;
			using (var repository = _repositoryFactory())
			{
				repository.Add(entity);
				CommitChanges(repository);
			}
			retVal = GetById(contact.Id);
			return retVal;
		}
		public coreModel.SearchResult Search(coreModel.SearchCriteria criteria)
		{
			var retVal = new coreModel.SearchResult();
			var taskList = new List<Task>();

			taskList.Add(Task.Factory.StartNew(() => SearchOrganizations(criteria, retVal)));
			taskList.Add(Task.Factory.StartNew(() => SearchContacts(criteria, retVal)));
	
			Task.WaitAll(taskList.ToArray());

			return retVal;
		}
		public coreModel.Organization Create(coreModel.Organization organization)
		{
			var entity = organization.ToDataModel();
			coreModel.Organization retVal = null;
			using (var repository = _repositoryFactory())
			{
				repository.Add(entity);
				CommitChanges(repository);
			}
            retVal = GetById(entity.Id);
			return retVal;
		}
Esempio n. 6
0
        /// <summary>
        /// Converting to model type
        /// </summary>
        /// <param name="dbEntity"></param>
        /// <returns></returns>
        public static coreModel.Member ToCoreModel(this dataModel.Member dbEntity, coreModel.Member member)
        {
            if (dbEntity == null)
                throw new ArgumentNullException("dbEntity");
            var memberType = member.MemberType;
            member.InjectFrom(dbEntity);
            member.MemberType = memberType;

            member.Addresses = dbEntity.Addresses.OrderBy(x=>x.Id).Select(x => x.ToCoreModel()).ToList();
            member.Emails = dbEntity.Emails.OrderBy(x => x.Id).Select(x => x.Address).ToList();
            member.Notes = dbEntity.Notes.OrderBy(x => x.Id).Select(x => x.ToCoreModel()).ToList();
            member.Phones = dbEntity.Phones.OrderBy(x => x.Id).Select(x => x.Number).ToList();
            return member;
        }
        public coreModel.Organization Create(coreModel.Organization organization)
        {
            var entity = organization.ToDataModel();

            using (var repository = _repositoryFactory())
            {
                repository.Add(entity);
                CommitChanges(repository);
            }

            _dynamicPropertyService.SaveDynamicPropertyValues(organization);

            var retVal = GetById(entity.Id);
            return retVal;
        }
        public coreModel.Contact Create(coreModel.Contact contact)
        {
            var entity = contact.ToDataModel();

            using (var repository = _repositoryFactory())
            {
                repository.Add(entity);
                CommitChanges(repository);
            }

            _dynamicPropertyService.SaveDynamicPropertyValues(contact);

            var retVal = GetById(entity.Id);
            return retVal;
        }
        public coreModel.Contact Create(coreModel.Contact contact)
        {
            var pkMap = new PrimaryKeyResolvingMap();
            var entity = contact.ToDataModel(pkMap);

            using (var repository = _repositoryFactory())
            {
                repository.Add(entity);

                CommitChanges(repository);

                pkMap.ResolvePrimaryKeys();
            }

            _dynamicPropertyService.SaveDynamicPropertyValues(contact);

            var retVal = GetById(entity.Id);
            return retVal;
        }
		private void SearchOrganizations(coreModel.SearchCriteria criteria, coreModel.SearchResult result)
		{
			using (var repository = _repositoryFactory())
			{
				var query = repository.Organizations;
				if (criteria.OrganizationId != null)
				{
					query = query.Where(x => x.MemberRelations.Any(y=>y.AncestorId == criteria.OrganizationId));
				}
				else
				{
					query = query.Where(x => !x.MemberRelations.Any());
				}

				result.Organizations = query.OrderByDescending(x => x.Name)
										    .ToArray()
											.Select(x=>x.ToCoreModel())
											.ToList();
			}
		}
		public void Update(coreModel.Organization[] organizations)
		{
			using (var repository = _repositoryFactory())
			using (var changeTracker = base.GetChangeTracker(repository))
			{
				foreach (var organization in organizations)
				{
					var sourceEntity = organization.ToDataModel();
					var targetEntity = repository.GetOrganizationById(organization.Id);
					if (targetEntity == null)
					{
						throw new NullReferenceException("targetEntity");
					}

					changeTracker.Attach(targetEntity);
					sourceEntity.Patch(targetEntity);
				}
				CommitChanges(repository);
			}
		}
Esempio n. 12
0
		public void Update(coreModel.Contact[] contacts)
		{
			using (var repository = _repositoryFactory())
			using (var changeTracker = base.GetChangeTracker(repository))
			{
				foreach (var contact in contacts)
				{
					var sourceEntity = contact.ToFoundation();
					var targetEntity = repository.GetContactById(contact.Id);
					if (targetEntity == null)
					{
						throw new NullReferenceException("targetEntity");
					}

					changeTracker.Attach(targetEntity);
					sourceEntity.Patch(targetEntity);
				}
				CommitChanges(repository);
			}
		}
        private void SearchOrganizations(coreModel.SearchCriteria criteria, coreModel.SearchResult result)
        {
            using (var repository = _repositoryFactory())
            {
                var query = repository.Organizations;
                if (criteria.OrganizationId != null)
                {
                    query = query.Where(x => x.MemberRelations.Any(y => y.AncestorId == criteria.OrganizationId));
                    if (!String.IsNullOrEmpty(criteria.Keyword))
                    {
                        query = query.Where(x => x.Name.Contains(criteria.Keyword));
                    }
                }
                else
                {
                    if (!String.IsNullOrEmpty(criteria.Keyword))
                    {
                        query = query.Where(x => x.Name.Contains(criteria.Keyword));
                    }
                    else
                    {
                        query = query.Where(x => !x.MemberRelations.Any());
                    }
                }

                var sortInfos = criteria.SortInfos;
                if (sortInfos.IsNullOrEmpty())
                {
                    sortInfos = new[] { new SortInfo { SortColumn = "Name" } };
                }
                //Try to replace sorting columns names
                TryTransformSortingInfoColumnNames(_organizationSortingAliases, sortInfos);
                query = query.OrderBySortInfos(sortInfos);


                result.Organizations = query.ToArray()
                                            .Select(x => x.ToCoreModel())
                                            .ToList();
            }
        }
        public IHttpActionResult Search(coreModel.SearchCriteria criteria)
        {
            var result = _contactSearchService.Search(criteria);

            var retVal = new webModel.SearchResult();

            var start = criteria.Skip;
            var count = criteria.Take;

            // all organizations
            var organizations = result.Organizations.Select(x => x.ToWebModel());
            var contacts = result.Contacts.Select(x => x.ToWebModel());

            retVal.TotalCount = organizations.Count() + result.TotalCount;
            retVal.Members.AddRange(organizations.Skip(start).Take(count));

            count -= organizations.Count();

            retVal.Members.AddRange(contacts.Take(count));

            return Ok(retVal);
        }
		private void SearchContacts(coreModel.SearchCriteria criteria, coreModel.SearchResult result)
		{
			using (var repository = _repositoryFactory())
			{
				var query = repository.Members.OfType<foundationModel.Contact>();
				if(criteria.OrganizationId != null)
				{
					query = query.Where(x => x.MemberRelations.Any(y => y.AncestorId == criteria.OrganizationId));
				}
				else
				{
					query = query.Where(x => !x.MemberRelations.Any());
				}

				result.TotalCount = query.Count();

				result.Contacts = query.OrderBy(x => x.FullName)
								   .Skip(criteria.Start)
								   .Take(criteria.Count)
								   .ToArray()
								   .Select(x => x.ToCoreModel())
								   .ToList();
			}
		}
Esempio n. 16
0
 private static void SetPropertyValue(dataModel.ContactPropertyValue retVal, coreModel.Property property)
 {
     switch (property.ValueType)
     {
         case coreModel.PropertyValueType.Boolean:
             retVal.BooleanValue = Convert.ToBoolean(property.Value);
             break;
         case coreModel.PropertyValueType.DateTime:
             retVal.DateTimeValue = Convert.ToDateTime(property.Value);
             break;
         case coreModel.PropertyValueType.Decimal:
             retVal.DecimalValue = Convert.ToDecimal(property.Value);
             break;
         case coreModel.PropertyValueType.Integer:
             retVal.IntegerValue = Convert.ToInt32(property.Value);
             break;
         case coreModel.PropertyValueType.LongText:
             retVal.LongTextValue = Convert.ToString(property.Value);
             break;
         case coreModel.PropertyValueType.ShortText:
             retVal.ShortTextValue = Convert.ToString(property.Value);
             break;
     }
 }
Esempio n. 17
0
        public void Update(coreModel.Contact[] contacts)
        {
            using (var repository = _repositoryFactory())
            using (var changeTracker = GetChangeTracker(repository))
            {
                foreach (var contact in contacts)
                {
                    var sourceEntity = contact.ToDataModel();
                    var targetEntity = repository.GetContactById(contact.Id);

                    if (targetEntity == null)
                    {
                        throw new NullReferenceException("targetEntity");
                    }

                    changeTracker.Attach(targetEntity);
                    sourceEntity.Patch(targetEntity);

                    _dynamicPropertyService.SaveDynamicPropertyValues(contact);
                }

                CommitChanges(repository);
            }
        }
        private void SearchContacts(coreModel.SearchCriteria criteria, coreModel.SearchResult result)
        {
            using (var repository = _repositoryFactory())
            {
                var query = repository.Members.OfType<foundationModel.Contact>();

                if (criteria.OrganizationId != null)
                {
                    query = query.Where(x => x.MemberRelations.Any(y => y.AncestorId == criteria.OrganizationId));
                    if (!String.IsNullOrEmpty(criteria.Keyword))
                    {
                        query = query.Where(x => x.FullName.Contains(criteria.Keyword));
                    }
                }
                else
                {
                    if (!String.IsNullOrEmpty(criteria.Keyword))
                    {
                        query = query.Where(x => x.FullName.Contains(criteria.Keyword) || x.Emails.Any(y => y.Address.Contains(criteria.Keyword)));
                    }
                    else
                    {
                        query = query.Where(x => !x.MemberRelations.Any());
                    }
                }

                result.TotalCount = query.Count();

                var sortInfos = criteria.SortInfos;
                if (sortInfos.IsNullOrEmpty())
                {
                    sortInfos = new[] { new SortInfo { SortColumn = "FullName" } };
                }
                //Try to replace sorting columns names
                TryTransformSortingInfoColumnNames(_contactSortingAliases, sortInfos);
                query = query.OrderBySortInfos(sortInfos);

                result.Contacts = query.Skip(criteria.Skip)
                                   .Take(criteria.Take)
                                   .ToArray()
                                   .Select(x => x.ToCoreModel())
                                   .ToList();
            }
        }
        public coreModel.SearchResult Search(coreModel.SearchCriteria criteria)
        {
            coreModel.SearchResult retVal;
            using (var repository = _repositoryFactory())
            {
                var query = repository.Members.OrderBy(x => x.CreatedDate).OfType<foundationModel.Contact>().Select(x => x.Id);

                retVal = new coreModel.SearchResult
                {
                    TotalCount = query.Count(),
                    Contacts = new List<coreModel.Contact>()
                };

                foreach (var contactId in query.Skip(criteria.Start).Take(criteria.Count).ToArray())
                {
                    var contact = repository.GetContactById(contactId);
                    if (contact != null)
                    {
                        retVal.Contacts.Add(contact.ToCoreModel());
                    }
                }
            }

            return retVal;
        }
Esempio n. 20
0
        public IHttpActionResult Search(coreModel.SearchCriteria criteria)
        {
            var result = _memberService.SearchMembers(criteria);

            return Ok(result);
        }
Esempio n. 21
0
 public IHttpActionResult UpdateMember(coreModel.Member member)
 {
     _memberService.CreateOrUpdate(new[] { member });
     return StatusCode(HttpStatusCode.NoContent);
 }
Esempio n. 22
0
 public IHttpActionResult CreateContact(coreModel.Contact contact)
 {
     return CreateMember(contact);
 }
Esempio n. 23
0
 public IHttpActionResult CreateMember(coreModel.Member member)
 {
     _memberService.CreateOrUpdate(new [] { member });
     var retVal = _memberService.GetByIds(new[] { member.Id }).FirstOrDefault();
     return Ok(retVal);
 }
Esempio n. 24
0
 public IHttpActionResult CreateOrganization(coreModel.Organization organization)
 {
     return CreateMember(organization);
 }