Beispiel #1
0
        public async Task UpdateAsync(CitizenEntity[] entities)
        {
            if (entities == null || !entities.Any())
            {
                return;
            }

            using (var context = new CitizensContext())
            {
                DateTime oldCdate;
                DateTime udate = DateTime.UtcNow;
                foreach (var entity in entities)
                {
                    var oldEntity = await context.Citizens.FirstOrDefaultAsync(a => a.id == entity.id).ConfigureAwait(false);

                    if (oldEntity == null)
                    {
                        throw new Exception($"Citizen with such ID is not found. ID = {entity.id}");
                    }

                    oldCdate = oldEntity.cdate;
                    entity.CopyTo(oldEntity);
                    oldEntity.cdate = oldCdate;
                    oldEntity.udate = udate;
                }

                await context.SaveChangesAsync().ConfigureAwait(false);
            }
        }
Beispiel #2
0
        public async Task <CitizenEntity[]> SearchAsync(SearchCriteria criteria, int?skip, int?take)
        {
            criteria = criteria ?? new SearchCriteria();

            using (var context = new CitizensContext())
            {
                IQueryable <CitizenEntity> qresult = context.Citizens;

                //search filters
                if (criteria.Ids != null && criteria.Ids.Any())
                {
                    qresult = qresult.Where(a => criteria.Ids.Contains(a.id));
                }
                if (!string.IsNullOrEmpty(criteria.FirstName))
                {
                    qresult = qresult.Where(a => a.first_name != null && a.first_name.ToLower().Contains(criteria.FirstName.ToLower()));
                }
                if (!string.IsNullOrEmpty(criteria.LastName))
                {
                    qresult = qresult.Where(a => a.last_name != null && a.last_name.ToLower().Contains(criteria.LastName.ToLower()));
                }
                if (!string.IsNullOrEmpty(criteria.Patronymic))
                {
                    qresult = qresult.Where(a => a.patronymic != null && a.patronymic.ToLower().Contains(criteria.Patronymic.ToLower()));
                }
                if (!string.IsNullOrEmpty(criteria.Inn))
                {
                    qresult = qresult.Where(a => a.inn != null && a.inn.ToLower().Contains(criteria.Inn.ToLower()));
                }
                if (!string.IsNullOrEmpty(criteria.Snils))
                {
                    qresult = qresult.Where(a => a.snils != null && a.snils.ToLower().Contains(criteria.Snils.ToLower()));
                }
                if (criteria.BirthDates != null && criteria.BirthDates.Any())
                {
                    qresult = qresult.Where(a => a.birth_date.HasValue && criteria.BirthDates.Contains(a.birth_date.Value));
                }
                if (criteria.DeathDates != null && criteria.DeathDates.Any())
                {
                    qresult = qresult.Where(a => a.death_date.HasValue && criteria.DeathDates.Contains(a.death_date.Value));
                }

                //getting a part of result
                if (skip.HasValue)
                {
                    qresult = qresult.Skip(skip.Value);
                }
                if (take.HasValue)
                {
                    qresult = qresult.Take(take.Value);
                }

                //query executing and getting actual results
                var result = qresult.ToArray();

                return(result);
            }
        }
Beispiel #3
0
        public async Task <CitizenEntity> GetAsync(int id)
        {
            using (var context = new CitizensContext())
            {
                var entity = await context.Citizens.FirstOrDefaultAsync(a => a.id == id).ConfigureAwait(false);

                if (entity == null)
                {
                    throw new Exception($"Citizen with such ID is not found. ID = {id}");
                }

                return(entity);
            }
        }
Beispiel #4
0
        public async Task CreateAsync(CitizenEntity[] entities)
        {
            if (entities == null || !entities.Any())
            {
                return;
            }

            using (var context = new CitizensContext())
            {
                var cdate = DateTime.UtcNow;
                foreach (var entity in entities)
                {
                    entity.cdate = entity.udate = cdate;
                    context.Citizens.Add(entity);
                }

                await context.SaveChangesAsync().ConfigureAwait(false);
            }
        }
Beispiel #5
0
        public async Task DeleteAsync(int[] ids)
        {
            if (ids == null || !ids.Any())
            {
                throw new ArgumentNullException("Citizen IDs are not specified");
            }

            using (var context = new CitizensContext())
            {
                foreach (var id in ids)
                {
                    var oldEntity = await context.Citizens.FirstOrDefaultAsync(a => a.id == id).ConfigureAwait(false);

                    if (oldEntity == null)
                    {
                        throw new Exception($"Citizen with such ID is not found. ID = {id}");
                    }
                    context.Citizens.Remove(oldEntity);
                }

                await context.SaveChangesAsync().ConfigureAwait(false);
            }
        }