public async Task <IActionResult> UpdateFacility(Guid facilitykey, [FromBody] UpdateFacilityRequest request)
        {
            if (ModelState.IsValid)
            {
                _logger.LogDebug("Update Facility Request called with {@UpdateRequest}", request);
                var facilityUpdate = await _facilityManager.Update(facilitykey, request);

                if (facilityUpdate.OperationResult == CreateUpdateResultEnum.Success)
                {
                    _logger.LogInformation("Facility successfully saved updated result : {UpdateResult}", facilityUpdate);
                    return(Ok(facilityUpdate.Object));
                }

                if (facilityUpdate.OperationResult == CreateUpdateResultEnum.NotFound)
                {
                    _logger.LogError("No Result Found for facility  {FacilityKey}.", facilitykey);
                    ModelState.AddModelError("facilitykey", "Error Processing Request");
                }
                if (facilityUpdate.OperationResult == CreateUpdateResultEnum.ValidationFailed)
                {
                    _logger.LogError("Error updating facility  {FacilityKey} as validation failed from database.", facilitykey);
                    ModelState.AddModelError("facilitykey", "Error Processing Request");
                }
            }
            _logger.LogDebug("ModelState validation failed :{@Data}", request);
            return(BadRequest(new ModelStateRequestValidationAdaptor(ModelState)));
        }
        public UpdateFacilityResponse UpdateFacility(UpdateFacilityRequest request)
        {
            var facility = PersistenceContext.Load <Facility>(request.FacilityDetail.FacilityRef, EntityLoadFlags.CheckVersion);

            var assembler = new FacilityAssembler();

            assembler.UpdateFacility(request.FacilityDetail, facility, this.PersistenceContext);

            CheckMultipleInformationAuthoritiesUsed();

            return(new UpdateFacilityResponse(assembler.CreateFacilitySummary(facility)));
        }
        /// <summary>
        /// Send Updates  to Facility Repository.
        /// </summary>
        /// <param name="facilityKey">Facility Identifier.</param>
        /// <param name="updateFacilityRequest">The update Facility Request.</param>
        /// <returns>Task&lt;FacilityEntity&gt;.</returns>
        public async Task <BusinessResult <Model.Facility> > Update(Guid facilityKey, UpdateFacilityRequest updateFacilityRequest)
        {
            var facilityEntity = await _facilityRepository.GetAsync(facilityKey);

            if (facilityEntity == null)
            {
                return(new BusinessResult <Model.Facility>(null, CreateUpdateResultEnum.NotFound));
            }
            var updatedFacility =
                _mapper.Map(updateFacilityRequest, facilityEntity);
            var updateResult = await _facilityRepository.UpdateFacility(updatedFacility);

            if (updateResult)
            {
                return(new BusinessResult <Model.Facility>(
                           _mapper.Map <FacilityEntity, Model.Facility>(updatedFacility), CreateUpdateResultEnum.Success));
            }

            return(new BusinessResult <Model.Facility>(null, CreateUpdateResultEnum.ValidationFailed));
        }