예제 #1
0
        public IActionResult AttachOrganDeliverySnapshot(OrganStateSnapshotViewModel model)
        {
            var result = this.Execute(() =>
            {
                _transportService.AddOrganDeliverySnapshot(model);
            });

            return(Json(result));
        }
        public void AddOrganDeliverySnapshot(OrganStateSnapshotViewModel model)
        {
            var patientRequest = _patientRequestsService.GetById(model.PatientRequestId);

            if (patientRequest == null)
            {
                throw new ArgumentOutOfRangeException("PatientRequest is not exist.");
            }

            var donorRequest = _donorRequestsService.GetById(patientRequest.RequestsRelation.DonorRequestId);

            if (donorRequest == null)
            {
                throw new ArgumentOutOfRangeException("DonorRequest is not exist.");
            }
            if (!donorRequest.TransplantOrganId.HasValue)
            {
                throw new ArgumentOutOfRangeException("DonorRequest has not linked transplant organ.");
            }

            var transplantOrgan = _transplantOrgansService.GetById(donorRequest.TransplantOrganId.Value);

            if (transplantOrgan == null)
            {
                throw new ArgumentOutOfRangeException("Transplant organ is not exist.");
            }

            var snapshot = new OrganDataSnapshot()
            {
                TransplantOrganId = transplantOrgan.Id,
                Temperature       = model.Temperature,
                Humidity          = model.Humidity,
                Time      = DateTime.UtcNow,
                Longitude = model.Longitude,
                Altitude  = model.Altitude
            };

            _deliverySnapshotsRepository.Add(snapshot);
        }