public async Task <bool> UpdateOrganisation(UpdateOrganisationCommand command) { var organisationId = command.OrganisationId; var providerTypeId = command.ProviderTypeId; var organisationTypeId = command.OrganisationTypeId; var legalName = command.LegalName; var tradingName = command.TradingName; var companyNumber = command.CompanyNumber; var charityNumber = command.CharityNumber; var updatedBy = command.Username; var applicationDeterminedDateValue = command.ApplicationDeterminedDate.ToString(RoatpDateTimeFormat); using (var connection = _dbConnectionHelper.GetDatabaseConnection()) { var updatedAt = DateTime.Now; const string sql = "update [Organisations] SET LegalName = @legalName,organisationTypeId=@organisationTypeId, providerTypeId=@providerTypeId, tradingName= @tradingName," + " OrganisationData = JSON_MODIFY(JSON_MODIFY(JSON_MODIFY(OrganisationData, '$.ApplicationDeterminedDate', @applicationDeterminedDateValue),'$.CompanyNumber',@companyNumber),'$.CharityNumber',@CharityNumber), " + " UpdatedBy = @updatedBy, UpdatedAt = @updatedAt " + " WHERE Id = @organisationId"; int recordsAffected = await connection.ExecuteAsync(sql, new { legalName, organisationTypeId, providerTypeId, tradingName, companyNumber, charityNumber, applicationDeterminedDateValue, updatedBy, updatedAt, organisationId }); return(recordsAffected > 0); } }
public async void Handle_BCouldNotDeleteOrganisationResearchers_Test() { Organisation organisationNull = new Organisation(); this._unitOfUnitMock.Setup(mock => mock.OrganisationRepository.Update(It.IsAny <Organisation>())) .Returns(organisationNull); this._unitOfUnitMock .Setup(mock => mock.RelationsRepository.DeleteAllOrganisationResearchers(It.IsAny <int>())) .Returns(false); UpdateOrganisationCommand command = new UpdateOrganisationCommand(new OrganisationWithChildren() { Created = DateTime.Now, OrganisationName = "s", Address = "s", MainOrganisationId = 1, ZipCode = "6700", City = "es", Country = "sad" }); var handler = new UpdateOrganisationHandler(this._unitOfUnitMock.Object); var result = await handler.Handle(command, new CancellationTokenSource().Token); Assert.Null(result); }
public async Task <bool> Handle(UpdateOrganisationRequest request, CancellationToken cancellationToken) { request.LegalName = _textSanitiser.SanitiseInputText(request.LegalName); request.TradingName = _textSanitiser.SanitiseInputText(request.TradingName); var command = new UpdateOrganisationCommand { OrganisationId = request.OrganisationId, OrganisationTypeId = request.OrganisationTypeId, ApplicationDeterminedDate = request.ApplicationDeterminedDate, CharityNumber = request.CharityNumber, CompanyNumber = request.CompanyNumber, LegalName = request.LegalName, ProviderTypeId = request.ProviderTypeId, TradingName = request.TradingName, Username = request.Username }; _logger.LogInformation($@"Handling Update organisation for Organisation ID [{request.OrganisationId}]"); var errorMessage = _organisationValidator.ValidateOrganisation(command); if (!string.IsNullOrEmpty(errorMessage?.Message)) { _logger.LogInformation($@"Update organisation for Organisation ID [{request.OrganisationId}] failed validation because {errorMessage.Message}"); throw new BadRequestException(errorMessage.Message); } var auditChanges = _auditLogService.AuditOrganisation(command); if (auditChanges is null) { _logger.LogInformation($@"Update organisation for Organisation ID [{request.OrganisationId}] not applied as no differences found"); return(true); } var success = await _updateOrganisationRepository.UpdateOrganisation(command); if (!success) { _logger.LogInformation($@"Update organisation for Organisation ID [{request.OrganisationId}] not applied as no update made on an existing record"); return(false); } var fieldsAuditWritten = await _updateOrganisationRepository.WriteFieldChangesToAuditLog(auditChanges); if (!fieldsAuditWritten) { _logger.LogInformation($@"Update organisation audit for Organisation ID [{request.OrganisationId}] not applied as no insertion made on Audit table"); return(await Task.FromResult(false)); } return(true); }
public bool IsValidUpdateOrganisation(UpdateOrganisationCommand command) { return(IsValidLegalName(command.LegalName) && IsValidTradingName(command.TradingName) && IsValidProviderTypeId(command.ProviderTypeId) && IsValidOrganisationTypeId(command.OrganisationTypeId) && IsValidApplicationDeterminedDate(command.ApplicationDeterminedDate) && IsValidCompanyNumber(command.CompanyNumber) && IsValidCharityNumber(command.CharityNumber)); }
public ValidationErrorMessage ValidateOrganisation(UpdateOrganisationCommand command) { if (IsValidUpdateOrganisation(command)) { return(new ValidationErrorMessage()); } var invalidOrganisationError = "Invalid Organisation data"; if (!IsValidLegalName(command.LegalName)) { invalidOrganisationError = $"{invalidOrganisationError}: Invalid Legal Name [{command.LegalName}]"; } if (!IsValidTradingName(command.TradingName)) { invalidOrganisationError = $"{invalidOrganisationError}: Invalid Trading Name [{command.TradingName}]"; } if (!IsValidProviderTypeId(command.ProviderTypeId)) { invalidOrganisationError = $"{invalidOrganisationError}: Invalid Provider Type Id [{command.ProviderTypeId}]"; } if (!IsValidOrganisationTypeId(command.OrganisationTypeId)) { invalidOrganisationError = $"{invalidOrganisationError}: Invalid Organisation Type Id [{command.OrganisationTypeId}]"; } if (!IsValidCompanyNumber(command.CompanyNumber)) { invalidOrganisationError = $"{invalidOrganisationError}: Invalid company number [{command.CompanyNumber}]"; } if (!IsValidApplicationDeterminedDate(command.ApplicationDeterminedDate)) { invalidOrganisationError = $"{invalidOrganisationError}: Invalid Application Determined Date [{command.ApplicationDeterminedDate}]"; } if (!IsValidCharityNumber(command.CharityNumber)) { invalidOrganisationError = $"{invalidOrganisationError}: Invalid charity registration number [{command.CharityNumber}]"; } return(new ValidationErrorMessage { Message = invalidOrganisationError }); }
public async void Handle_FSucces_Test() { Organisation organisationNull = new Organisation(); this._unitOfUnitMock.Setup(mock => mock.OrganisationRepository.Update(It.IsAny <Organisation>())) .Returns(organisationNull); this._unitOfUnitMock .Setup(mock => mock.RelationsRepository.DeleteAllOrganisationResearchers(It.IsAny <int>())) .Returns(true); OrganisationResearcher nullItem = new OrganisationResearcher(); this._unitOfUnitMock.Setup(mock => mock.RelationsRepository.CreateOrganisationResearcher(It.IsAny <OrganisationResearcher>())) .Returns(nullItem); this._unitOfUnitMock.Setup(mock => mock.RelationsRepository.DeleteAllOrganisationsProjects(It.IsAny <int>())) .Returns(true); OrganisationProject nullProejct = new OrganisationProject(); this._unitOfUnitMock .Setup(mock => mock.RelationsRepository.CreateOrganisationProject(It.IsAny <OrganisationProject>())) .Returns(nullProejct); UpdateOrganisationCommand command = new UpdateOrganisationCommand(new OrganisationWithChildren() { Created = DateTime.Now, OrganisationName = "s", Address = "s", MainOrganisationId = 1, ZipCode = "6700", City = "es", Country = "sad", Researchers = new List <ResearcherModel>() { new ResearcherModel() }, Projects = new List <ProjectModel>() { new ProjectModel() } }); var handler = new UpdateOrganisationHandler(this._unitOfUnitMock.Object); var result = await handler.Handle(command, new CancellationTokenSource().Token); Assert.True((bool)result); }
public void Organisation_Validation_checks() { var command = new UpdateOrganisationCommand(); command.LegalName = "legal name"; command.TradingName = null; command.ProviderTypeId = 1; command.ApplicationDeterminedDate = DateTime.Today; command.OrganisationTypeId = 1; command.CompanyNumber = "12345678"; command.CharityNumber = null; var result = _validator.IsValidUpdateOrganisation(command); Assert.AreEqual(result, true); }
public void Organisation_Validation_checks_passes_validation() { var command = new UpdateOrganisationCommand { OrganisationId = Guid.NewGuid(), LegalName = "legal name", TradingName = null, ProviderTypeId = 1, ApplicationDeterminedDate = DateTime.Today, OrganisationTypeId = 1, CompanyNumber = "12345678", CharityNumber = null }; var result = _validator.ValidateOrganisation(command); Assert.IsNull(result.Message); }
public void Organisation_Validation_checks_fails_invalid_provider_type() { var command = new UpdateOrganisationCommand { OrganisationId = Guid.NewGuid(), LegalName = "name", TradingName = null, ProviderTypeId = 2, ApplicationDeterminedDate = DateTime.Today, OrganisationTypeId = 1, CompanyNumber = "12345678", CharityNumber = null }; var result = _validator.ValidateOrganisation(command); Assert.IsNotNull(result.Message); Assert.IsTrue(result.Message.ToLower().Contains("provider type")); }
public async Task <IActionResult> UpdateOrganisation([FromBody] OrganisationWithChildren organisation) { if (organisation == null) { return(new BadRequestObjectResult("Invalid Model")); } var command = new UpdateOrganisationCommand(organisation); var result = await this._mediator.Send(command); if (result == null) { return(new BadRequestObjectResult("Something went wrong")); } return(new OkObjectResult(result)); }
public AuditData AuditOrganisation(UpdateOrganisationCommand command) { var auditChanges = new List <AuditData>(); var auditChangesMade = AuditLegalName(command.OrganisationId, command.Username, command.LegalName); if (auditChangesMade.ChangesMade) { auditChanges.Add(auditChangesMade); } auditChangesMade = AuditTradingName(command.OrganisationId, command.Username, command.TradingName); if (auditChangesMade.ChangesMade) { auditChanges.Add(auditChangesMade); } auditChangesMade = AuditProviderType(command.OrganisationId, command.Username, command.ProviderTypeId, command.OrganisationTypeId); if (auditChangesMade.ChangesMade) { auditChanges.Add(auditChangesMade); } auditChangesMade = AuditCompanyNumber(command.OrganisationId, command.Username, command.CompanyNumber); if (auditChangesMade.ChangesMade) { auditChanges.Add(auditChangesMade); } auditChangesMade = AuditCharityNumber(command.OrganisationId, command.Username, command.CharityNumber); if (auditChangesMade.ChangesMade) { auditChanges.Add(auditChangesMade); } auditChangesMade = AuditApplicationDeterminedDate(command.OrganisationId, command.Username, command.ApplicationDeterminedDate); if (auditChangesMade.ChangesMade) { auditChanges.Add(auditChangesMade); } var auditDetailsReturned = new AuditData { FieldChanges = new List <AuditLogEntry>() }; if (auditChanges.Any()) { auditDetailsReturned.OrganisationId = command.OrganisationId; auditDetailsReturned.UpdatedAt = DateTime.Now; auditDetailsReturned.UpdatedBy = command.Username; foreach (var auditChange in auditChanges) { foreach (var fieldChange in auditChange.FieldChanges) { auditDetailsReturned.FieldChanges.Add(fieldChange); } } return(auditDetailsReturned); } return(null); }