예제 #1
0
        public bool DeleteArray(Type requestType, long[][] requestIds)
        {
            bool status = false;

            var mapper       = new DTOMapper(DbContext);
            var rqEntityType = mapper.GetTypeMaps().FirstOrDefault(x => x.TargetType.Equals(requestType))?.SourceType;

            if (rqEntityType == null)
            {
                throw new Exception("No typemap for " + requestType.Name + " found");
            }
            var requestKeys = requestIds.Select(x => x.Cast <object>().ToArray()).ToArray();

            foreach (var keys in requestKeys)
            {
                var entity = DbContext.Set(rqEntityType).Find(keys) as MappableEntity;

                if (entity != null)
                {
                    //dbContext.Set(rqEntityType).Remove(entity);
                    entity.Delete(DbContext);
                    status = true;
                }
            }
            DbContext.SaveChanges();

            return(status);
        }
예제 #2
0
        public TModelDTO[] PostArray(Type requestType, TModelDTO[] data)
        {
            TModelDTO[] items = data;

            if (items == null)
            {
                return(null);
            }

            var entityMapper = new EntityMapper(DbContext)
            {
                UserName = UserName, UserId = UserId
            };
            var dtoMapper = new DTOMapper(DbContext);

            var rqEntityType = dtoMapper.GetTypeMaps().FirstOrDefault(x => x.TargetType.Equals(requestType))?.SourceType;

            if (rqEntityType == null)
            {
                return(null);
            }

            var dbSet = DbContext.Set(rqEntityType);

            List <TModelDTO> resultItems = new List <TModelDTO>();

            foreach (var item in items)
            {
                object entity = dbSet.Find(item.Keys);
                if (entity == null)
                {
                    entity = dbSet.Create();
                    dbSet.Add(entity);
                }
                entityMapper.MapTo(item, entity, requestType, rqEntityType);

                DbContext.SaveChanges();

                var dto = dtoMapper.MapTo(entity, requestType) as TModelDTO;
                resultItems.Add(dto);
            }
            items = resultItems.ToArray();

            return(items);
        }
예제 #3
0
        public TModelDTO[] PutArray(Type requestType, TModelDTO[] data)
        {
            TModelDTO[] items = data;

            var entityMapper = new EntityMapper(DbContext)
            {
                UserName = UserName, UserId = UserId
            };
            var dtoMapper = new DTOMapper(DbContext);

            var rqEntityType = dtoMapper.GetTypeMaps().FirstOrDefault(x => x.TargetType.Equals(requestType))?.SourceType;

            if (rqEntityType == null)
            {
                return(null);
            }

            List <TModelDTO> resultItems = new List <TModelDTO>();

            foreach (object item in items)
            {
                object entity = entityMapper.MapTo(item, null, requestType, rqEntityType);
                try
                {
                    DbContext.SaveChanges();
                }
                catch (Exception e)
                {
                    throw e;
                }
                var dto = dtoMapper.MapTo(entity, requestType) as TModelDTO;
                resultItems.Add(dto);
            }
            items = resultItems.ToArray();

            return(items);
        }
예제 #4
0
        public TModelDTO[] GetArray(Type requestType, long[][] requestIds)
        {
            TModelDTO[] items = new TModelDTO[0];

            var mapper = new DTOMapper(DbContext);

            if (requestType.Equals(typeof(ScoredResultDataDTO)))
            {
                //var leagueService = new LeagueDBService.LeagueDBService();
                if (requestIds != null && requestIds.Count() > 0)
                {
                    items = requestIds.Select(x => GetScoredResult(x[0], x[1])).Cast <TModelDTO>().ToArray();
                }
            }
            else if (requestType.Equals(typeof(StandingsDataDTO)))
            {
                //var scoringIds = requestIds.Select(x => x[0]).ToArray();
                //var sessionIds = requestIds.Select(x => x.Count() > 0 ? x[1] : 0).ToArray();
                items = GetStandings(requestIds).Cast <TModelDTO>().ToArray();
            }
            else if (requestType.Equals(typeof(IncidentReviewDataDTO)))
            {
                items = GetReviews(requestIds.Select(x => x.FirstOrDefault()).ToArray()).Cast <TModelDTO>().ToArray();
            }
            else
            {
                var rqEntityType = mapper.GetTypeMaps().FirstOrDefault(x => x.TargetType.Equals(requestType))?.SourceType;
                if (rqEntityType == null)
                {
                    return(null);
                }

                List <TModelDTO> resultItems = new List <TModelDTO>();

                List <object> entities = new List <object>();

                try
                {
                    if (requestIds != null)
                    {
                        var requestKeys = requestIds.Select(x => x.Cast <object>().ToArray()).ToArray();
                        foreach (var keys in requestKeys)
                        {
                            object entity = DbContext.Set(rqEntityType).Find(keys);
                            //if (entity == null)
                            //throw new Exception("Entity not found in Database - Type: " + rqEntityType.Name + " || keys: { " + keys.Select(x => x.ToString()).Aggregate((x, y) => ", ") + " }");
                            if (entity != null)
                            {
                                entities.Add(entity);
                            }
                        }
                    }
                    else
                    {
                        entities = DbContext.Set(rqEntityType).ToListAsync().Result;
                    }
                }
                catch (Exception e)
                {
                    throw new Exception("Error while getting data from Database.", e);
                }

                try
                {
                    foreach (var entity in entities)
                    {
                        var dto = mapper.MapTo(entity, requestType) as TModelDTO;
                        resultItems.Add(dto);
                    }
                }
                catch (Exception e)
                {
                    throw new Exception("Error while mapping data.", e);
                }
                items = resultItems.ToArray();
            }

            return(items);
        }