示例#1
0
        public LoginResponse GetUserLogins(UserRequest request)
        {
            List <LoginDTO> result = null;

            try
            {
                NullSafeCheck(request);
                NullSafeCheck(request.Filter, "Filter");

                var filter = request.Filter;

                using (var context = new CharityEntities())
                {
                    var query = context.Logins.AsNoTracking().AsQueryable();
                    if (filter.ID > 0)
                    {
                        query = query.Where(p => p.CreateUser == filter.ID);
                    }
                    else
                    {
                        throw new Exception("UserID is not valid");
                    }
                    result = query.Select(LoginDTOMapper).ToList();
                }

                return(new LoginResponse {
                    Success = true, ResultList = result
                });
            }
            catch (Exception ex)
            {
                var response = ExceptionToBaseResponse(ex);
                return(response.Cast <LoginResponse>());
            }
        }
示例#2
0
        private int EntitySet <T, E>(T dto) where T : DTO.DTOBase
        {
            using (var context = new CharityEntities())
            {
                if (dto.ID == 0)
                {
                    dto.CreateDate = DateTime.Now;
                    dto.Active     = true;
                }
                else
                {
                    dto.ModifyDate = DateTime.Now;
                }

                E   entity = Map <T, E>(dto);
                var entry  = context.Entry(entity);
                entry.State = dto.ID == 0 ? System.Data.Entity.EntityState.Added : System.Data.Entity.EntityState.Modified;
                if (dto.ID > 0)
                {
                    entry.Property("CreateDate").IsModified = false;
                    entry.Property("CreateUser").IsModified = false;
                }
                context.SaveChanges();
                return((int)entry.Property("ID").OriginalValue);
            }
        }
示例#3
0
        public ResponseBase PatronIntroducerSet(PatronRequest request)
        {
            try
            {
                NullSafeCheck(request, "PatronRequest");
                NullSafeCheck(request.DTO, "DTO");

                if (request.DTO.ID <= 0)
                {
                    throw new CustomException(BAD_REQ_USER_MESSAGE, $"Patron ID {request.DTO.ID} is not valid");
                }
                if ((request.DTO.IntroducerID ?? 0) <= 0)
                {
                    throw new CustomException(BAD_REQ_USER_MESSAGE, $"IntroducerID {request.DTO.IntroducerID} is not valid");
                }

                using (var context = new CharityEntities())
                {
                    var patron = context.Patrons.FirstOrDefault(p => p.ID == request.DTO.ID);
                    patron.IntroducerID = request.DTO.IntroducerID;

                    context.SaveChanges();
                }

                return(new ResponseBase(true, 1));
            }
            catch (Exception ex)
            {
                LogHelper.Log(ex);
                return(ExceptionToBaseResponse(ex));
            }
        }
示例#4
0
        public ResponseBase PersonPictureSet(PersonRequest request)
        {
            try
            {
                NullSafeCheck(request, "PersonRequest");
                NullSafeCheck(request.Picture, "Picture");

                if (request.Picture.PersonID <= 0)
                {
                    throw new CustomException(BAD_REQ_USER_MESSAGE, $"PersonID {request.Picture.PersonID} is not valid");
                }

                using (var context = new CharityEntities())
                {
                    var picture = context.Pictures.FirstOrDefault(p => p.PersonID == request.Picture.PersonID);
                    request.Picture.ID = picture?.ID ?? 0;
                }
                var result = EntitySet <PictureDTO, Picture>(request.Picture);
                return(new ResponseBase(true, result));
            }
            catch (Exception ex)
            {
                LogHelper.Log(ex);
                return(ExceptionToBaseResponse(ex));
            }
        }
示例#5
0
        public PatronResponse PatronGetList(PatronRequest request)
        {
            List <PatronDTO> result = null;

            try
            {
                NullSafeCheck(request, "Request");
                NullSafeCheck(request.Filter, "Filter");

                using (var context = new CharityEntities())
                {
                    var filter = request.Filter;

                    var query = context.Patrons.AsNoTracking().AsQueryable();
                    if (filter.ID > 0)
                    {
                        query = query.Where(p => p.Active && p.ID == filter.ID);
                    }
                    else
                    {
                        if (filter.Active != null)
                        {
                            query = query.Where(p => p.Active == filter.Active);
                        }
                        if (filter.CreateDate?.From != null)
                        {
                            query = query.Where(p => p.CreateDate >= filter.CreateDate.From);
                        }
                        if (filter.CreateDate?.To != null)
                        {
                            query = query.Where(p => p.CreateDate <= filter.CreateDate.To);
                        }
                        if (filter.PersonID > 0)
                        {
                            query = query.Where(p => p.PersonID == filter.PersonID);
                        }
                    }
                    result = query.Select(PatronDTOMapper).ToList();

                    if (request.LoadPerson)
                    {
                        var persons = context.People.AsNoTracking();
                        result.ForEach(patron =>
                        {
                            var person    = persons.FirstOrDefault(p => p.ID == patron.PersonID);
                            patron.Person = PersonDTOMapper(person);
                        });
                    }
                }

                return(new PatronResponse {
                    Success = true, ResultList = result
                });
            }
            catch (Exception ex)
            {
                var response = ExceptionToBaseResponse(ex);
                return(response.Cast <PatronResponse>());
            }
        }
        public DocumentResponse DocumentGet(DocumentRequest request)
        {
            try
            {
                DocumentDTO result = null;

                NullSafeCheck(request, "DocumentRequest");
                NullSafeCheck(request.Filter, "Filter");
                if (request.Filter.ID <= 0)
                {
                    throw new ArgumentException($"DocumentID is not valid '{request.Filter.ID}'");
                }

                using (var context = new CharityEntities())
                {
                    var document = context.Documents.AsNoTracking().FirstOrDefault(d => d.ID == request.Filter.ID);
                    result = DocumentDTOMapper.Invoke(document);
                }
                return(new DocumentResponse {
                    Success = true, Result = result
                });
            }
            catch (Exception ex)
            {
                var response = ExceptionToBaseResponse(ex);
                return(response.Cast <DocumentResponse>());
            }
        }
示例#7
0
        public IntroducerResponse IntroducerGetList(IntroducerRequest request)
        {
            List <IntroducerDTO> result = null;

            try
            {
                NullSafeCheck(request, "IntroducerRequest");
                UserCheck(request);

                var filter = request.Filter;

                using (var context = new CharityEntities())
                {
                    var query = context.Introducers.AsNoTracking().AsQueryable();
                    if (filter != null)
                    {
                        if (filter.ID > 0)
                        {
                            query = query.Where(p => p.Active && p.ID == filter.ID);
                        }
                        if (filter.PersonID > 0)
                        {
                            query = query.Where(p => p.Active && p.PersonID == filter.PersonID);
                        }
                        else
                        {
                            if (filter.Active != null)
                            {
                                query = query.Where(p => p.Active == filter.Active);
                            }
                            if (filter.CreateDate?.From != null)
                            {
                                query = query.Where(p => p.CreateDate >= filter.CreateDate.From);
                            }
                            if (filter.CreateDate?.To != null)
                            {
                                query = query.Where(p => p.CreateDate <= filter.CreateDate.To);
                            }
                        }
                    }
                    result = query.Select(IntroducerDTOMapper).ToList();

                    if (request.LoadPerson)
                    {
                        var people = context.People.AsNoTracking();
                        result.ForEach(i => i.Person = PersonDTOMapper.Invoke(people.FirstOrDefault(p => p.ID == i.PersonID)));
                    }
                }

                return(new IntroducerResponse {
                    Success = true, ResultList = result
                });
            }
            catch (Exception ex)
            {
                var response = ExceptionToBaseResponse(ex);
                return(response.Cast <IntroducerResponse>());
            }
        }
示例#8
0
        public PatronResponse PatronGet(PatronRequest request)
        {
            try
            {
                NullSafeCheck(request, "Request");
                NullSafeCheck(request.Filter, "Filter");

                if (request.Filter.ID <= 0 && request.Filter.PersonID <= 0 && string.IsNullOrEmpty(request.Filter.NationalNo))
                {
                    throw new CustomException(INVALID_REQ_USER_MESSAGE, "ID,PersonID and NationalNo is invalid");
                }

                PatronDTO result = null;
                using (var context = new CharityEntities())
                {
                    var query = context.Patrons.AsNoTracking().AsQueryable();

                    if (request.Filter.ID > 0)
                    {
                        query = query.Where(p => p.Active && p.ID == request.Filter.ID);
                    }

                    else if (request.Filter.PersonID > 0)
                    {
                        query = query.Where(p => p.PersonID == request.Filter.PersonID);
                    }

                    else if (string.IsNullOrEmpty(request.Filter.NationalNo) == false)
                    {
                        var person = context.People.AsNoTracking().FirstOrDefault(p => p.NationalNo == request.Filter.NationalNo);
                        query = query.Where(p => p.PersonID == person.ID);
                    }

                    result = query.Select(PatronDTOMapper).FirstOrDefault();

                    if (request.LoadPerson)
                    {
                        var people = context.People.AsNoTracking();
                        var person = people.FirstOrDefault(p => p.ID == result.PersonID);
                        result.Person = PersonDTOMapper(person);
                    }
                }

                if (result == null)
                {
                    throw new CustomException("نتیجه ای یافت نشد", "Patron not found");
                }

                return(new PatronResponse {
                    Success = result != null, ResultID = result?.ID ?? 0, Result = result
                });
            }
            catch (Exception ex)
            {
                var response = ExceptionToBaseResponse(ex);
                return(response.Cast <PatronResponse>());
            }
        }
示例#9
0
        public PersonResponse PersonGetList(PersonRequest request)
        {
            List <PersonDTO> result = null;

            try
            {
                NullSafeCheck(request);
                NullSafeCheck(request.Filter);
                var filter = request.Filter;

                using (var context = new CharityEntities())
                {
                    var query = context.People.AsNoTracking().AsQueryable();
                    if (filter.ID > 0)
                    {
                        query = query.Where(p => p.Active && p.ID == filter.ID);
                    }
                    else if (filter.IDList?.Count > 0)
                    {
                        query = query.Where(p => p.Active && filter.IDList.Contains(p.ID));
                    }
                    else
                    {
                        if (filter.Active != null)
                        {
                            query = query.Where(p => p.Active == filter.Active);
                        }
                        if (filter.CreateDate?.From != null)
                        {
                            query = query.Where(p => p.CreateDate >= filter.CreateDate.From);
                        }
                        if (filter.CreateDate?.To != null)
                        {
                            query = query.Where(p => p.CreateDate <= filter.CreateDate.To);
                        }

                        query = query.Where(p => p.NationalNo.Contains(filter.NationalNo));
                        query = query.Where(p => p.FirstName.StartsWith(filter.FirstName));
                        query = query.Where(p => p.LastName.StartsWith(filter.LastName));
                    }
                    result = query.Select(PersonDTOMapper).ToList();
                }

                return(new PersonResponse {
                    Success = true, ResultList = result
                });
            }
            catch (Exception ex)
            {
                var response = ExceptionToBaseResponse(ex);
                return(response.Cast <PersonResponse>());
            }
        }
示例#10
0
        public ResearchResponse ResearchGetList(ResearchRequest request)
        {
            List <ResearchDTO> result = null;

            try
            {
                NullSafeCheck(request, "ResearchRequest");

                var filter = request.Filter;

                using (var context = new CharityEntities())
                {
                    var query = context.Researches.AsNoTracking().AsQueryable();
                    if (filter != null)
                    {
                        if (filter.ID > 0)
                        {
                            query = query.Where(p => p.Active && p.ID == filter.ID);
                        }
                        else
                        {
                            if (filter.Active != null)
                            {
                                query = query.Where(p => p.Active == filter.Active);
                            }
                            if (filter.CreateDate?.From != null)
                            {
                                query = query.Where(p => p.CreateDate >= filter.CreateDate.From);
                            }
                            if (filter.CreateDate?.To != null)
                            {
                                query = query.Where(p => p.CreateDate <= filter.CreateDate.To);
                            }
                            if (filter.RequestID > 0)
                            {
                                query = query.Where(p => p.RequestID == filter.RequestID);
                            }
                        }
                    }
                    result = query.Select(Mapper.ResearchDTOMapper).ToList();
                }

                return(new ResearchResponse {
                    Success = true, ResultList = result
                });
            }
            catch (Exception ex)
            {
                var response = ExceptionToBaseResponse(ex);
                return(response.Cast <ResearchResponse>());
            }
        }
示例#11
0
        public UserResponse UserGetList(UserRequest request)
        {
            List <UserDTO> result = null;

            try
            {
                NullSafeCheck(request);
                NullSafeCheck(request.Filter, "Filter");

                var filter = request.Filter;

                using (var context = new CharityEntities())
                {
                    var query = context.Users.AsNoTracking().AsQueryable();
                    if (filter.ID > 0)
                    {
                        query = query.Where(p => p.Active && p.ID == filter.ID);
                    }
                    else
                    {
                        if (filter.Active != null)
                        {
                            query = query.Where(u => u.Active == filter.Active);
                        }
                        if (filter.CreateDate?.From != null)
                        {
                            query = query.Where(u => u.CreateDate >= filter.CreateDate.From);
                        }
                        if (filter.CreateDate?.To != null)
                        {
                            query = query.Where(u => u.CreateDate <= filter.CreateDate.To);
                        }
                        if (request.Filter?.UserName?.Length > 0)
                        {
                            query = query.Where(u => u.UserName.StartsWith(filter.UserName));
                        }
                    }
                    result = query.Select(UserDTOMapper).ToList();
                }

                return(new UserResponse {
                    Success = true, ResultList = result
                });
            }
            catch (Exception ex)
            {
                var response = ExceptionToBaseResponse(ex);
                return(response.Cast <UserResponse>());
            }
        }
示例#12
0
        public PictureResponse PersonPictureGet(PersonRequest request)
        {
            try
            {
                NullSafeCheck(request, "Request");
                NullSafeCheck(request.Filter, "Filter");

                var filter = request.Filter;
                IEnumerable <PictureDTO> result = null;

                using (var context = new CharityEntities())
                {
                    var query = context.Pictures.AsNoTracking().AsQueryable();

                    if (filter.ID > 0)
                    {
                        query = query.Where(p => p.PersonID == filter.ID);
                    }
                    else if (filter.IDList?.Count > 0)
                    {
                        query = query.Where(p => filter.IDList.Contains(p.PersonID));
                    }
                    else if (filter.NationalNo?.Length == 10)
                    {
                        var id = context.People.FirstOrDefault(p => p.NationalNo.Equals(filter.NationalNo))?.ID ?? 0;
                        query = query.Where(p => p.PersonID == id);
                    }
                    else
                    {
                        throw new CustomException("فیلتری یافت نشد. برای دریافت همه تصاویر از سرویس دیگری استفاده کنید", "No Filter found!");
                    }

                    result = query.Select(PictureDTOMapper);
                    if (result == null)
                    {
                        throw new CustomException("تصویری یافت نشد", $"No picture found for personId '{request.Filter.ID}'");
                    }
                    return(new PictureResponse {
                        Success = true, ResultList = result.ToList()
                    });
                }
            }
            catch (Exception ex)
            {
                LogHelper.Log(ex);
                return(ExceptionToBaseResponse(ex).Cast <PictureResponse>());
            }
        }
示例#13
0
        private bool EntityDelete <T, E>(int id) where T : DTOBase
        {
            using (var context = new CharityEntities())
            {
                T dto = Activator.CreateInstance <T>();
                dto.ID         = id;
                dto.Active     = false;
                dto.ModifyDate = DateTime.Now;

                E entity = Map <T, E>(dto);

                var entry      = context.Entry(entity);
                var activeProp = entry.Property("Active");

                if (activeProp != null)
                {
                    entry.State = System.Data.Entity.EntityState.Modified;
                    foreach (var item in entity.GetType().GetProperties())
                    {
                        if (item.GetGetMethod().IsVirtual)
                        {
                            continue;
                        }
                        if (item.Name == "Active" || item.Name == "ModifyDate" || item.Name == "State" || item.Name == "ID")
                        {
                            continue;
                        }
                        var prop = entry.Property(item.Name);
                        if (prop != null)
                        {
                            prop.IsModified = false;
                        }
                    }
                }
                else
                {
                    entry.State = System.Data.Entity.EntityState.Deleted;
                }

                context.SaveChanges();
                return(true);
            }
        }
示例#14
0
 public ResponseBase RequestResearch(RequestRequest request)
 {
     try
     {
         NullSafeCheck(request, "RequestRequest");
         NullSafeCheck(request.DTO, "RequestDTO");
         UserCheck(request, request.DTO);
         using (var context = new CharityEntities())
         {
             var entity = context.Requests.FirstOrDefault(r => r.ID == request.DTO.ID);
             entity.ResearchDate = DateTime.Now;
             context.SaveChanges();
         }
         return(new ResponseBase(true, 1));
     }
     catch (Exception ex)
     {
         return(ExceptionToBaseResponse(ex));
     }
 }
示例#15
0
        public EntityResponse EntityGetList(EntityRequest request)
        {
            List <EntityDTO> result = null;

            try
            {
                NullSafeCheck(request, "EntityRequest");

                var filter = request.Filter;

                using (var context = new CharityEntities())
                {
                    var query = context.Entities.AsNoTracking().AsQueryable();
                    if (filter != null)
                    {
                        if (filter.ID > 0)
                        {
                            query = query.Where(p => p.ID == filter.ID);
                        }
                        else
                        {
                            if (filter.Key?.Length > 0)
                            {
                                query = query.Where(p => p.EntityKey.ToLower() == filter.Key.ToLower());
                            }
                        }
                    }
                    result = query.Select(EntityDTOMapper).ToList();
                }

                return(new EntityResponse {
                    Success = true, ResultList = result
                });
            }
            catch (Exception ex)
            {
                var response = ExceptionToBaseResponse(ex);
                return(response.Cast <EntityResponse>());
            }
        }
示例#16
0
 public RequestResponse RequestLastNo()
 {
     try
     {
         using (var context = new CharityEntities())
         {
             int no = 0;
             if (context.Requests.Count() > 0)
             {
                 no = context.Requests.AsNoTracking().Select(r => int.Parse(r.No)).Max();
             }
             return(new RequestResponse {
                 Success = true, MaxNo = no
             });
         }
     }
     catch (System.Exception ex)
     {
         return(new RequestResponse {
             Success = false, Message = ex.Message, UserMessage = "خطا هنگام دریافت داده"
         });
     }
 }
示例#17
0
        public PersonResponse PersonGet(PersonRequest request)
        {
            try
            {
                PersonDTO result = null;
                using (var context = new CharityEntities())
                {
                    var query = context.People.AsNoTracking().AsQueryable();
                    if (request.Filter.ID > 0)
                    {
                        query = query.Where(p => p.Active && p.ID == request.Filter.ID);
                    }
                    else
                    {
                        query = query.Where(p => p.NationalNo == request.Filter.NationalNo);
                    }

                    result = query.Select(PersonDTOMapper).FirstOrDefault();
                }

                if (result == null)
                {
                    throw new CustomException("نتیجه ای یافت نشد", "Person not found");
                }


                return(new PersonResponse {
                    Success = result != null, ResultID = result?.ID ?? 0, Result = result
                });
            }
            catch (Exception ex)
            {
                var response = ExceptionToBaseResponse(ex);
                return(response.Cast <PersonResponse>());
            }
        }
示例#18
0
        public UserResponse UserGet(UserRequest request)
        {
            try
            {
                NullSafeCheck(request);
                NullSafeCheck(request.Filter);


                using (var context = new CharityEntities())
                {
                    var query = context.Users.AsNoTracking().AsQueryable();
                    if (request.Filter.ID > 0)
                    {
                        query = query.Where(u => u.ID == request.Filter.ID);
                    }
                    else if (!string.IsNullOrEmpty(request.Filter.UserName))
                    {
                        query = query.Where(u => u.UserName.ToLower() == request.Filter.UserName.ToLower());
                    }
                    else if (request.Filter.PersonID > 0)
                    {
                        query = query.Where(u => u.PersonID == request.Filter.PersonID);
                    }

                    var user = UserDTOMapper(query.FirstOrDefault());
                    return(new UserResponse {
                        Success = user != null, ResultID = user?.ID ?? 0, Result = user
                    });
                }
            }
            catch (Exception ex)
            {
                var response = ExceptionToBaseResponse(ex);
                return(response.Cast <UserResponse>());
            }
        }