public async Task <int> Handle(RegisterPollingStationCommand message, CancellationToken cancellationToken) { try { //TODO[DH] this can be moved to a previous step, before the command is executed var pollingStation = await _context.PollingStations .Where(a => a.Number == message.IdPollingStation && a.County.Code == message.CountyCode) .FirstOrDefaultAsync(); if (pollingStation == null) { throw new ArgumentException("Sectia nu exista"); } var formular = await _context.PollingStationInfos .FirstOrDefaultAsync(a => a.IdObserver == message.IdObserver && a.IdPollingStation == pollingStation.Id); if (formular == null) { formular = _mapper.Map <PollingStationInfo>(message); formular.IdPollingStation = pollingStation.Id; formular.IdObserver = message.IdObserver; _context.Add(formular); } else { _mapper.Map(message, formular); } return(await _context.SaveChangesAsync()); } catch (Exception ex) { _logger.LogError(new EventId(), ex.Message); } return(-1); }