예제 #1
0
        private async Task DeleteQrCode(ScanQrCodeDto scanQrCodeDto)
        {
            QrCode qrCode = await _context.QrCode.FindAsync(scanQrCodeDto.QrCode);

            _context.QrCode.Remove(qrCode);
            await _context.SaveChangesAsync();
        }
예제 #2
0
        private async Task UpdateToPositive(ScanQrCodeDto scanQrCodeDto)
        {
            Citizen citizen = (from Citizen c in _context.Citizens
                               where c.CitizenID == scanQrCodeDto.citizen
                               select c).SingleOrDefault();

            citizen.Is_Positive = true;
            citizen.Is_Exposed  = false;
            await _context.SaveChangesAsync();
        }
예제 #3
0
        private async Task InsertCitizenQrCode(ScanQrCodeDto scanQrCodeDto)
        {
            CitizenQrCode citizen = new CitizenQrCode
            {
                QrCodeId  = scanQrCodeDto.QrCode,
                Timestamp = DateTime.Now,
                CitizenId = scanQrCodeDto.citizen,
            };

            _context.CitizenQrCode.Add(citizen);
            await _context.SaveChangesAsync();
        }
예제 #4
0
        public async Task ScanQrCode(ScanQrCodeDto scanQrCodeDto)
        {
            await using var transaction = await _context.Database.BeginTransactionAsync();

            try
            {
                System.Diagnostics.Debug.WriteLine("Scan Qr Code");
                QrCode qrCode = await _context.QrCode.Include(qr => qr.Participant).FirstOrDefaultAsync(x => x.QrCodeID == (scanQrCodeDto.QrCode));

                ParticipantType participantType = qrCode.Participant.Participant_Type;

                switch (participantType)
                {
                case ParticipantType.Doctor:
                    System.Diagnostics.Debug.WriteLine("Qr Code du doctor scanné");
                    await DeleteQrCode(scanQrCodeDto);
                    await UpdateToPositive(scanQrCodeDto);
                    await ToNotify(scanQrCodeDto.citizen);

                    break;

                case ParticipantType.Establishment:
                    System.Diagnostics.Debug.WriteLine("Qr Code de l'etablisement scanné");
                    await InsertCitizenQrCode(scanQrCodeDto);

                    break;

                default:
                    break;
                }

                await _context.SaveChangesAsync();

                await transaction.CommitAsync();
            }
            catch (Exception exc)
            {
                await transaction.RollbackAsync();

                throw new Exception(exc.Message);
            }
        }
예제 #5
0
        public async Task <ActionResult <ScanQrCodeDto> > scanQrCode(ScanQrCodeDto scanQrCodeDto)
        {
            if (_qrCodesRepository.QrCodeExists(scanQrCodeDto.QrCode) == false)
            {
                return(BadRequest(new { message = "qrCode doesn't exist" }));
            }
            if (_qrCodesRepository.CitizenExists(scanQrCodeDto.citizen) == false)
            {
                return(BadRequest(new { message = "Citizen doesn't exist" }));
            }

            try {
                await _qrCodesRepository.ScanQrCode(scanQrCodeDto);
            }
            catch (DbException exc)
            {
                return(BadRequest(new { message = "erreur lors du scan " + exc.Message }));
            }
            return(scanQrCodeDto);
        }