Ejemplo n.º 1
0
        public async Task <NewScheduleResponse> RequestNewSchedule(NewScheduleRequest request)
        {
            var s = await _unitOfWork.GetRepository <Schedule>().FindAsync(x => x.PatientId == request.PatientId && x.ShiftId == request.ShiftId);

            if (s != null)
            {
                throw new Exception("Bệnh nhân đã đăng ký ca này");
            }

            var ordr = 1;
            var s1   = await _unitOfWork.GetRepository <Schedule>().FindAsync(x => x.ShiftId == request.ShiftId && x.PatientId != request.PatientId);

            if (s1 != null)
            {
                ordr = s1.Order + 1;
            }

            var      id       = newScheduleID();
            Schedule schedule = new Schedule
            {
                Id        = id,
                ShiftId   = request.ShiftId,
                PatientId = request.PatientId,
                Status    = 1,
                Order     = ordr,
                BHYT      = request.BHYT
            };

            _unitOfWork.GetRepository <Schedule>().Add(schedule);
            await _unitOfWork.CommitAsync();

            var p = await _unitOfWork.GetRepository <Patient>().FindAsync(x => x.Id == request.PatientId);

            var shift = await _unitOfWork.GetRepository <Shift>().FindAsync(x => x.Id == request.ShiftId);

            var room = await _unitOfWork.GetRepository <Room>().FindAsync(x => x.Id == shift.RoomId);

            var doctor = await _unitOfWork.GetRepository <Doctor>().FindAsync(x => x.Id == shift.DoctorId);

            var time = await _unitOfWork.GetRepository <Time>().FindAsync(x => x.Id == shift.TimeId);

            return(new NewScheduleResponse
            {
                Id = id,
                PatientId = p.Id,
                Name = p.Name,
                Birthday = p.Birthday,
                Room = room.Name,
                Doctor = doctor.Name,
                Date = shift.Date,
                Time = time.ShiftTime,
                Order = ordr,
                Status = 1,
                BHYT = request.BHYT
            });
        }
        public async Task <IActionResult> RequestNewSchedule(RequestNewScheduleController request)
        {
            string patientId;

            if (string.IsNullOrEmpty(request.PatientId))
            {
                patientId = await _shiftService.CreateNewPatient(request);

                request.PatientId = patientId;
            }

            var newScheduleRequest = new NewScheduleRequest
            {
                PatientId = request.PatientId,
                ShiftId   = request.ShiftId,
                BHYT      = request.BHYT
            };

            var response = await _shiftService.RequestNewSchedule(newScheduleRequest);

            return(Ok(new ApiOkResponse(response)));
        }