/// <summary> /// Creates the keyed dto. /// </summary> /// <param name="key">The key of the entity.</param> /// <returns>A <see cref="Rem.Ria.PatientModule.Web.FrontDeskDashboard.PayorCoverageCacheDto"/></returns> public PayorCoverageCacheDto CreateKeyedDto(long key) { var payorCoverage = _payorCoverageCacheRepository.GetByKey(key); var dto = Mapper.Map <PayorCoverageCache, PayorCoverageCacheDto> (payorCoverage); return(dto); }
/// <summary> /// Handles the specified request. /// </summary> /// <param name="request">The request.</param> /// <returns>A <see cref="Agatha.Common.Response"/></returns> public override Response Handle(SaveDtoRequest <PayorCoverageCacheDto> request) { var requestDto = request.DataTransferObject; DomainEvent.Register <RuleViolationEvent> (failure => _validationFailureOccurred = true); LogicalTreeWalker.Walk <IDataTransferObject> (requestDto, dto => dto.ClearAllDataErrorInfo()); var response = CreateTypedResponse(); if (requestDto.EditStatus == EditStatus.Create || requestDto.EditStatus == EditStatus.Update) { var patient = _patientRepository.GetByKeyOrThrow(requestDto.PatientKey, "Patient"); var payorCache = _payorCacheRepository.GetByKeyOrThrow(requestDto.PayorCache.Key, "Payor"); var effectiveDateRange = new DateRange(requestDto.StartDate, requestDto.EndDate); var payorCoverageCacheType = _mappingHelper.MapLookupField <PayorCoverageCacheType> (requestDto.PayorCoverageCacheType); var countyArea = _mappingHelper.MapLookupField <CountyArea> (requestDto.PayorSubscriberCache.Address.CountyArea); var stateProvince = _mappingHelper.MapLookupField <StateProvince> (requestDto.PayorSubscriberCache.Address.StateProvince); var country = _mappingHelper.MapLookupField <Country> (requestDto.PayorSubscriberCache.Address.Country); var address = new Address( requestDto.PayorSubscriberCache.Address.FirstStreetAddress, requestDto.PayorSubscriberCache.Address.SecondStreetAddress, requestDto.PayorSubscriberCache.Address.CityName, countyArea, stateProvince, country, new PostalCode(requestDto.PayorSubscriberCache.Address.PostalCode)); var gender = _mappingHelper.MapLookupField <AdministrativeGender>(requestDto.PayorSubscriberCache.AdministrativeGender); var patientName = new PersonNameBuilder() .WithFirst(requestDto.PayorSubscriberCache.FirstName) .WithMiddle(requestDto.PayorSubscriberCache.MiddleName) .WithLast(requestDto.PayorSubscriberCache.LastName); var payorSubscriberRelationshipCacheType = _mappingHelper.MapLookupField <PayorSubscriberRelationshipCacheType> (requestDto.PayorSubscriberCache.PayorSubscriberRelationshipCacheType); var payorSubscriberCache = new PayorSubscriberCache( address, requestDto.PayorSubscriberCache.BirthDate, gender, patientName, payorSubscriberRelationshipCacheType); PayorCoverageCache payorCoverageCache; if (requestDto.EditStatus == EditStatus.Create) { payorCoverageCache = _payorCoverageCacheFactory.CreatePayorCoverage( patient, payorCache, effectiveDateRange, requestDto.MemberNumber, payorSubscriberCache, payorCoverageCacheType); } else { payorCoverageCache = _payorCoverageCacheRepository.GetByKeyOrThrow(requestDto.Key, "Payor"); payorCoverageCache.RevisePayorCoverageCacheInfo(payorCoverageCacheType, effectiveDateRange, requestDto.MemberNumber); payorCoverageCache.RevisePayorCache(payorCache); payorCoverageCache.RevisePayorSubscriberCache(payorSubscriberCache); } response.DataTransferObject = payorCoverageCache == null ? requestDto : Mapper.Map <PayorCoverageCache, PayorCoverageCacheDto>(payorCoverageCache); } else if (requestDto.EditStatus == EditStatus.Delete) { var payorCoverageCache = _payorCoverageCacheRepository.GetByKey(requestDto.Key); if (payorCoverageCache != null) { _payorCoverageCacheFactory.DestroyPayorCoverage(payorCoverageCache); } response.DataTransferObject = requestDto; } else { var payorCoverageCache = _payorCoverageCacheRepository.GetByKeyOrThrow(requestDto.Key, "Payor"); response.DataTransferObject = Mapper.Map <PayorCoverageCache, PayorCoverageCacheDto>(payorCoverageCache); } var processSucceeded = !_validationFailureOccurred; if (processSucceeded) { Session.Flush(); Session.Clear(); } else { if (requestDto.EditStatus == EditStatus.Create) { response.DataTransferObject.Key = 0; } } return(response); }