public async Task <IActionResult> AddFacility([FromBody] NewFacilityRequest request) { _logger.LogDebug("Add facility request received, data: {@NewFacilityRequest}", request); if (ModelState.IsValid) { var facilityCreationResult = await _facilityManager.Add(request); if (facilityCreationResult.OperationResult == CreateUpdateResultEnum.Success) { _logger.LogDebug("Entity has been saved with facility {Facility}:", facilityCreationResult.Object.FacilityKey); //var eventMessage = new FacilityAddedIntegrationEvent() //{ // //TODO: following code needs to be updated. // IsActive = facilityCreationResult.Object.ActiveFlag, // ProcessInactiveAsException = false,// facilityEntity.ProcessInactiveAsException, // FacilityId = request.Id,//ID // FacilityCode = facilityCreationResult.Object.FacilityCode, // ADUIgnoreStockOut = false,//facilityEntity.ADUIgnoreStockOut, // AduIgnoreCritLow = false,//facilityEntity.AduIgnoreCritLow //}; //TODO: This code is to be removed. commented temporarily to test out event bus. //var headers = // _httpContextAccessor.HttpContext.Request.Headers // .ToDictionary<KeyValuePair<string, StringValues>, string, string>(item => item.Key, // item => item.Value); //_eventBus.Publish(_messageBusTopicsConfiguration.KafkaFacilityDetailsTopic, eventMessage, headers); //_logger.LogDebug("data published to {EventBus} and data object :{@Data}", // _messageBusTopicsConfiguration.KafkaFacilityDetailsTopic, eventMessage); return(new CreatedResult( facilityCreationResult.Object.FacilityKey.ToString(), facilityCreationResult.Object)); } if (facilityCreationResult.OperationResult == CreateUpdateResultEnum.ErrorAlreadyExists) { _logger.LogError("Record already exists with facility code {FacilityCode}:", request.FacilityCode); ModelState.AddModelError(nameof(request.FacilityCode), "Record already exists with facility code"); } if (facilityCreationResult.OperationResult == CreateUpdateResultEnum.ValidationFailed || facilityCreationResult.OperationResult == CreateUpdateResultEnum.UnknownError) { _logger.LogError( "Error in saving facility due to validation failure for data {@Facility}", request); ModelState.AddModelError(string.Empty, "Error in saving facility due to validation failure for data."); } } _logger.LogDebug("ModelState validation failed :{@Data}", request); return(BadRequest(new ModelStateRequestValidationAdaptor(ModelState))); }
/// <summary> /// Sends facility to Facility Repository for insertion into database. /// </summary> /// <param name="facilityRequest">The facility request.</param> /// <returns>Task<FacilityEntity>.</returns> public async Task <BusinessResult <Model.Facility> > Add(NewFacilityRequest facilityRequest) { var existingFacility = await _facilityRepository.GetFacilityByCode(facilityRequest.FacilityCode); if (existingFacility != null) { return(new BusinessResult <Model.Facility>(null, CreateUpdateResultEnum.ErrorAlreadyExists)); } var facility = _mapper.Map <NewFacilityRequest, FacilityEntity>(facilityRequest); if (await _facilityRepository.AddFacility(facility)) { return(new BusinessResult <Model.Facility>(_mapper.Map <FacilityEntity, Model.Facility>(facility), CreateUpdateResultEnum.Success)); } return(new BusinessResult <Model.Facility>(null, CreateUpdateResultEnum.ValidationFailed)); }
public async Task CreateFacilityNegativeBadRequestTest() { //Arrange _mockFacilityManager.Reset(); _mockFacilityManager .Setup(b => b.Add(It.IsAny <NewFacilityRequest>())) .ReturnsAsync(() => new BusinessResult <Model.Facility>(new Model.Facility(), CreateUpdateResultEnum.ValidationFailed)); var badRequest = new NewFacilityRequest(); //Act var result = await _subject.AddFacility(badRequest); var createdResult = result as ObjectResult; //Assert Assert.NotNull(createdResult); Assert.Equal(400, createdResult.StatusCode); _mockFacilityManager.Verify(); }