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)); } }
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)); } }