Example #1
0
        /// <summary>
        /// Устанавливает теги клиенту, не используя setter коллекции. Сохраняет изменения в БД.
        /// </summary>
        /// <param name="client">Клиент.</param>
        /// <param name="tags">Коллекция тегов.</param>
        /// <param name="db"></param>
        public static void SetTags(this Client client, IEnumerable <Tag> tags, AppContext db)
        {
            //Клиент должен быть из db

            var tagsList = tags.ToList();

            tagsList.ForEach(tag =>
            {
                var dbTag = db.Tags.Find(tag.ID);
                //Если клиент не содержит тег, не в списке tags тег есть - добавляем тег клиенту.
                if (client.Tags.All(x => x.ID != tag.ID) && tagsList.Any(x => x.ID == tag.ID))
                {
                    client.Tags.Add(dbTag);
                }
            });

            client.Tags.ToList().ForEach(tag =>
            {
                //Если клиент содержит тег, но в списке tags тега нет - удаляем тег у клиента.
                if (client.Tags.Any(x => x.ID == tag.ID) && tagsList.All(x => x.ID != tag.ID))
                {
                    var clientTag = client.Tags.First(x => x.ID == tag.ID);
                    client.Tags.Remove(clientTag);
                }
            });

            db.SaveChanges();
        }
Example #2
0
 /// <summary>
 /// Копирует значения свойств из <paramref name="anotherClient"/> в <paramref name="client"/>.
 /// </summary>
 /// <param name="client"></param>
 /// <param name="anotherClient"></param>
 /// <param name="db"></param>
 public static void CopyPropertiesFrom(this Client client, Client anotherClient, AppContext db)
 {
     client.LastName   = anotherClient.LastName;
     client.FirstName  = anotherClient.FirstName;
     client.Patronymic = anotherClient.Patronymic;
     client.Email      = anotherClient.Email;
     client.Phone      = anotherClient.Phone;
     client.Birthday   = anotherClient.Birthday;
     client.Gender     = db.Genders.Find(anotherClient.Gender.Code);
     client.PhotoPath  = anotherClient.PhotoPath;
 }