Exemple #1
0
        public async Task <Response> Update(HistoryBaseRequest entity)
        {
            try
            {
                var entityToDb = new GeoLiteHistoryEntity
                {
                    Key           = entity.Key,
                    Actualize     = entity.Actualize,
                    LastCheckDate = entity.LastCheckDate,
                    Md5Sum        = entity.Md5Sum,
                    UpdateDate    = DateTime.Now
                };
                var local = _db.Set <GeoLiteHistoryEntity>().Local.FirstOrDefault(d => d.Key.Equals(entityToDb.Key));
                if (local != null)
                {
                    _db.Entry(local).State = EntityState.Detached;
                }

                _db.Entry(entityToDb).State = EntityState.Modified;
                await _db.SaveChangesAsync();

                return(new Response());
            }
            catch (Exception e)
            {
                var exceptionMessage = e.InnerException != null ? e.InnerException.Message : e.Message;
                return(new ErrorResponse(exceptionMessage, ResponseCodes.DATABASE_ERROR));
            }
        }
Exemple #2
0
        async Task <Response <HistoryBaseResponse> > IGeoLiteHistoryRepository.CheckHash(string md5Hash)
        {
            var vResult = new Response <HistoryBaseResponse>();

            try
            {
                var getHistoryEntity = await _db.GeoLiteHistoryEntities.Where(w => w.Md5Sum.Equals(md5Hash) && w.Actualize)
                                       .AsNoTracking().FirstOrDefaultAsync();

                var updateCheckInfo = getHistoryEntity != null;
                if (updateCheckInfo)
                {
                    getHistoryEntity.LastCheckDate = DateTime.Now;

                    var local = _db.Set <GeoLiteHistoryEntity>().Local
                                .FirstOrDefault(d => d.Key.Equals(getHistoryEntity.Key));

                    if (local != null)
                    {
                        _db.Entry(local).State = EntityState.Detached;
                    }

                    _db.Entry(getHistoryEntity).State = EntityState.Modified;
                    await _db.SaveChangesAsync();

                    vResult.Data = new HistoryBaseResponse
                    {
                        Key           = getHistoryEntity.Key,
                        Md5Sum        = getHistoryEntity.Md5Sum,
                        LastCheckDate = getHistoryEntity.LastCheckDate,
                        Actualize     = getHistoryEntity.Actualize,
                        UpdateDate    = getHistoryEntity.UpdateDate
                    };
                }
                else
                {
                    var historyEntity = new GeoLiteHistoryEntity
                    {
                        Key           = Guid.NewGuid(),
                        Actualize     = true,
                        LastCheckDate = DateTime.Now,
                        Md5Sum        = md5Hash,
                        UpdateDate    = DateTime.Now
                    };

                    await _db.GeoLiteHistoryEntities.AddAsync(historyEntity);

                    await _db.SaveChangesAsync();

                    vResult.Data = new HistoryBaseResponse
                    {
                        Key           = historyEntity.Key,
                        Md5Sum        = historyEntity.Md5Sum,
                        LastCheckDate = historyEntity.LastCheckDate,
                        Actualize     = historyEntity.Actualize,
                        UpdateDate    = historyEntity.UpdateDate
                    };
                }

                return(vResult);
            }
            catch (CustomException e)
            {
                return(new ErrorResponse <HistoryBaseResponse>(e.Errors.FirstOrDefault()?.ResultMessage,
                                                               ResponseCodes.DATABASE_ERROR));
            }
            catch (Exception e)
            {
                var exceptionMessage = e.InnerException != null ? e.InnerException.Message : e.Message;
                return(new ErrorResponse <HistoryBaseResponse>(exceptionMessage, ResponseCodes.DATABASE_ERROR));
            }
        }