public void Send(BillCacheMessage message) { this.Info(() => "Attempting to send BillCacheMessage: {0} to queue.".FormatWith(message.BillingType)); var bus = new TransactionBus(_bus); bus.SendDynamic(new BillCacheMessage { BillingType = message.BillingType, Command = message.Command }); this.Info(() => "Successfully sent BillCacheMessage: {0} to queue.".FormatWith(message.BillingType)); }
public void Send(BillingMessage message) { this.Info(() => "Attempting to send BillingMessage: {0} to queue.".FormatWith(message.RunType)); var bus = new TransactionBus(_bus); bus.SendDynamic(new BillingMessage() { RunType = message.RunType, Schedule = message.Schedule }); this.Info(() => "Successfully sent BillingMessage: {0} to queue.".FormatWith(message.RunType)); }
public void Send(TransactionRequestCleanupMessage message) { this.Info(() => "Attempting to send TransactionRequestCleanupMessage: {0} to queue.".FormatWith(message)); var bus = new TransactionBus(_bus); bus.SendDynamic(new TransactionRequestCleanupMessage()); this.Info(() => "Successfully sent TransactionRequestCleanupMessage: {0} to queue.".FormatWith(message)); }
public void it_should_publish_a_transaction() { var bus = new TransactionBus(_bus); // Customer transaction = new InvoiceTransactionCreated(new Guid("2FD581A3-47EC-42A6-8EE7-ECC03FADD14E")); bus.SendDynamic(transaction); _bus.ShouldNotBeNull(); }
public override void Observe() { var bus = new TransactionBus(_bus); var billRun = new BillingMessage() { RunType = "Final", Schedule = null }; bus.SendDynamic(billRun); }
public void it_should_publish_a_schedule_transaction() { var bus = new TransactionBus(_bus); cleanup = new TransactionRequestCleanupMessage { RequestId = new Guid() }; bus.SendDynamic(cleanup); _bus.ShouldNotBeNull(); }
public void it_should_publish_a_cancelled_vin12_transaction() { var bus = new TransactionBus(_bus); transaction = new TransactionRequestMessage { RequestId = new Guid("8E250190-EE28-40D6-92B8-042B67B98F7C"), UserState = ApiCommitRequestUserState.Cancelled }; bus.SendDynamic(transaction); _bus.ShouldNotBeNull(); }
public override void Observe() { var bus = new TransactionBus(_bus); var packageId = new Guid("E2E91BEA-B301-4CAD-A58A-425BC613C22C"); var client = new PackageMessage() { Id = packageId, PackageId = packageId, PackageName = "PackageTest 1", }; bus.SendDynamic(client); }
public override void Observe() { var bus = new TransactionBus(_bus); //Register Exchanges and Queues for multiple message types var messageTypes = new ArrayList { new InvoiceTransactionCreated(), new EntityMessage() }; IEnumerable<Object> listedMessageTypes = messageTypes.ToArray(); bus.RegisterQueuesExchanges(listedMessageTypes); //END - Register }
public override void Observe() { var bus = new TransactionBus(_bus); var customer = new CustomerMessage() { Id = Guid.NewGuid(), Created = DateTime.UtcNow, CreatedBy = "UNITTEST", AccountNumber = "UNITTEST0001", BillingType = "Response", CustomerId = new Guid("662872BB-38DF-4436-87A8-E4D45B6DD70B"), CustomerName = "Customer 1" }; bus.SendDynamic(customer); }
public override void Observe() { var bus = new TransactionBus(_bus); var client = new ClientMessage() { Id = Guid.NewGuid(), Created = DateTime.UtcNow, AccountNumber = "UNITTESTCL001", BillingType = "Response", CreatedBy = "UNITTEST", ClientId = new Guid("45547DDC-6AB7-4C45-BF50-9F6066AB3EEF"), ClientName = "Client 1" }; bus.SendDynamic(client); }
public override void Observe() { var bus = new TransactionBus(_bus); var userTransactions = new List<ContractUserTransactions>(); var products = new List<ContractProductDetail>(); products.Add(new ContractProductDetail { PackageName = "Test Package", TransactionCount = 12 }); userTransactions.Add(new ContractUserTransactions { User = "******", Products = products }); var statementList = new List<ContractStatement>(); statementList.Add(new ContractStatement { Customer = "Test Customer", Client = "", ContractName = "Test Contract", UserTransactions = userTransactions }); var data = new ReportDto { Template = new ReportTemplate { ShortId = "VkTYTvzp" }, Data = new ReportData { ContractStatements = statementList } }; var report = new ReportMessage() { Id = Guid.NewGuid(), ReportBody = JsonConvert.SerializeObject(data), ReportType = "pdf" }; bus.SendDynamic(report); }
public override void Observe() { var bus = new TransactionBus(_bus); var packagesList = new List<ReportPackage>(); packagesList.Add(new ReportPackage { ItemCode = "1000/200/002", ItemDescription = "PackageName", QuantityUnit = 1, Price = 16314.67, Vat = 2284 }); var data = new ReportDto { Template = new ReportTemplate { ShortId = "VJGAd9OM" }, Data = new ReportData { Customer = new ReportCustomer { Name = "Customer 1", TaxRegistration = 4190195679, Packages = packagesList } } }; var report = new ReportMessage() { Id = Guid.NewGuid(), ReportBody = JsonConvert.SerializeObject(data), ReportType = "pdf" }; bus.SendDynamic(report); }
public AdminBillingModule(IRepository<AuditLog> auditLogs, IRepository<Transaction> transactions, IAdvancedBus eBus) { this.RequiresAnyClaim(new[] { RoleType.Admin.ToString(), RoleType.ProductManager.ToString(), RoleType.Support.ToString() }); var advancedBus = new TransactionBus(eBus); Get["/Admin/Billing"] = _ => Negotiate.WithView("Index"); Get["/Admin/AuditLog"] = _ => { return Negotiate .WithView("AuditLog") .WithMediaRangeModel(MediaRange.FromString("application/json"), new { data = auditLogs }); }; Post["/Admin/Replay/BillingTransactions"] = _ => { try { foreach (var transaction in transactions) { var message = new InvoiceTransactionCreated(transaction.Id); advancedBus.SendDynamic(message); } } catch (Exception ex) { throw new LightstoneAutoException(ex.Message); } return Response.AsJson(new { data = "Success" }); }; Post["/Admin/Cache/Flush/{cycle}"] = param => { string billingCycle = param.cycle; try { switch (billingCycle) { case "preBilling": advancedBus.SendDynamic(new BillCacheMessage { BillingType = typeof(PreBilling), Command = BillingCacheCommand.Flush }); break; case "stageBilling": advancedBus.SendDynamic(new BillCacheMessage { BillingType = typeof(StageBilling), Command = BillingCacheCommand.Flush }); break; case "finalBilling": advancedBus.SendDynamic(new BillCacheMessage { BillingType = typeof(FinalBilling), Command = BillingCacheCommand.Flush }); break; } } catch (Exception ex) { throw new LightstoneAutoException(ex.Message); } return Response.AsJson(new { data = "Success" }); }; Post["/Admin/Cache/Reload/{cycle}"] = param => { string billingCycle = param.cycle; try { switch (billingCycle) { case "preBilling": advancedBus.SendDynamic(new BillCacheMessage { BillingType = typeof(PreBilling), Command = BillingCacheCommand.Reload }); break; case "stageBilling": advancedBus.SendDynamic(new BillCacheMessage { BillingType = typeof(StageBilling), Command = BillingCacheCommand.Reload }); break; case "finalBilling": advancedBus.SendDynamic(new BillCacheMessage { BillingType = typeof(FinalBilling), Command = BillingCacheCommand.Reload }); break; } } catch (Exception ex) { throw new LightstoneAutoException(ex.Message); } return Response.AsJson(new { data = "Success" }); }; }
public PackageModule(IPublishStorableCommands publisher, IRepository<Domain.Entities.Packages.Read.Package> readRepo, INEventStoreRepository<Package> writeRepo, IRepository<State> stateRepo, IEntryPoint entryPoint, IAdvancedBus eBus, IUserManagementApiClient userManagementApi, IBillingApiClient billingApiClient, IPublishIntegrationMessages integration) { Get[PackageBuilderApi.PackageRoutes.RequestIndex.ApiRoute] = _ => { return _.showAll ? Response.AsJson( from p1 in readRepo where p1.Version == (from p2 in readRepo where p2.PackageId == p1.PackageId && !p2.IsDeleted select p2.Version).Max() select p1) : Response.AsJson(readRepo.Where(x => !x.IsDeleted)); }; Get[PackageBuilderApi.PackageRoutes.RequestLookup.ApiRoute] = parameters => { var filter = ((string)Context.Request.Query["q_word[]"].Value + "").Replace(",", " "); var pageIndex = 0; var pageSize = 0; int.TryParse(Context.Request.Query["page_num"].Value, out pageIndex); int.TryParse(Context.Request.Query["per_page"].Value, out pageSize); var industries = ((string)parameters.industryIds.Value + "").Split(',').Select(x => !string.IsNullOrEmpty(x) ? new Guid(x) : new Guid()); var publishedPackages = from p1 in readRepo where p1.Version == (from p2 in readRepo where p2.PackageId == p1.PackageId select p2.Version).Max() && p1.State.Name == StateName.Published && p1.Industries.Any(ind => industries.Contains(ind.Id)) && (p1.Name + "").Trim().ToLower().StartsWith(filter) select p1; var packages = new PagedList<Domain.Entities.Packages.Read.Package>(publishedPackages, pageIndex - 1, pageSize, x => !x.IsDeleted); return Response.AsJson( new { result = packages, cnt_whole = packages.RecordsFiltered }); }; Get[PackageBuilderApi.PackageRoutes.RequestUpdate.ApiRoute] = parameters => Response.AsJson( new { Response = new[] { Mapper.Map<IPackage, PackageDto>(writeRepo.GetById(parameters.id)) } }); Post[PackageBuilderApi.PackageRoutes.Execute.ApiRoute] = parameters => { var apiRequest = this.Bind<ApiRequestDto>(); this.Info(() => StringExtensions.FormatWith("Package Execute Initialized for {0}, TimeStamp: {1}", apiRequest.RequestId, DateTime.UtcNow)); this.Info(() => StringExtensions.FormatWith("Package Read Initialized, TimeStamp: {0}", DateTime.UtcNow)); var package = writeRepo.GetById(apiRequest.PackageId, true); this.Info(() => StringExtensions.FormatWith("Package Read Completed, TimeStamp: {0}", DateTime.UtcNow)); if (package == null) { this.Error(() => StringExtensions.FormatWith("Package not found:", apiRequest.PackageId)); throw new LightstoneAutoException("Package could not be found"); } this.Info(() => StringExtensions.FormatWith("PackageBuilder Auth to UserManagement Initialized for {0}, TimeStamp: {1}", apiRequest.RequestId, DateTime.UtcNow)); var token = Context.Request.Headers.Authorization.Split(' ')[1]; var accountNumber = userManagementApi.Get(token, "/CustomerClient/{id}", new[] { new KeyValuePair<string, string>("id", apiRequest.CustomerClientId.ToString()) }, null); this.Info(() => StringExtensions.FormatWith("PackageBuilder Auth to UserManagement Completed for {0}, TimeStamp: {1}", apiRequest.RequestId, DateTime.UtcNow)); var responses = ((Package)package).Execute(entryPoint, apiRequest.UserId, Context.CurrentUser.UserName, Context.CurrentUser.UserName, apiRequest.RequestId, accountNumber, apiRequest.ContractId, apiRequest.ContractVersion, apiRequest.DeviceType, apiRequest.FromIpAddress, "", apiRequest.SystemType, apiRequest.RequestFields, (double)package.CostOfSale, (double)package.RecommendedSalePrice, apiRequest.HasConsent); // Filter responses for cleaner api payload this.Info(() => StringExtensions.FormatWith("Package Response Filter Cleanup Initialized for {0}, TimeStamp: {1}", apiRequest.RequestId, DateTime.UtcNow)); var filteredResponse = new List<IProvideResponseDataProvider> { new ResponseMeta(apiRequest.RequestId, responses.ResponseState()) }; filteredResponse.AddRange(Mapper.Map<IEnumerable<IDataProvider>, IEnumerable<IProvideResponseDataProvider>>(responses)); this.Info(() => StringExtensions.FormatWith("Package Response Filter Cleanup Completed for {0}, TimeStamp: {1}", apiRequest.RequestId, DateTime.UtcNow)); integration.SendToBus(new PackageResponseMessage(package.Id, apiRequest.UserId, apiRequest.ContractId, accountNumber, filteredResponse.Any() ? filteredResponse.AsJsonString() : string.Empty, apiRequest.RequestId, Context != null ? Context.CurrentUser.UserName : "******")); this.Info(() => StringExtensions.FormatWith("Package Execute Completed for {0}, TimeStamp: {1}", apiRequest.RequestId, DateTime.UtcNow)); return filteredResponse; }; Post[PackageBuilderApi.PackageRoutes.CommitRequest.ApiRoute] = _ => { var apiRequest = this.Bind<ApiCommitRequestDto>(); var token = Context.Request.Headers.Authorization.Split(' ')[1]; var request = billingApiClient.Get(token, "/Transactions/Request/{requestId}", new[] { new KeyValuePair<string, string>("requestId", apiRequest.RequestId.ToString()) } ,null); if (request.Contains("error")) return request; // RabbitMQ new TransactionBus(eBus).SendDynamic(Mapper.Map(apiRequest, new TransactionRequestMessage())); this.Info(() => StringExtensions.FormatWith("Updated TransactionRequest UserState: {0}", apiRequest.UserState)); if (apiRequest.UserState == ApiCommitRequestUserState.Cancelled) return Response.AsJson(new { Success = "Request successfully cancelled by user" }); if (apiRequest.UserState == ApiCommitRequestUserState.VehicleNotProvided) return Response.AsJson(new { Success = "Request successfully marked as VehicleNotProvided by user" }); this.Info(() => StringExtensions.FormatWith("Package ExecuteWithCarId Initialized for {0}, TimeStamp: {1}", apiRequest.RequestId, DateTime.UtcNow)); this.Info(() => StringExtensions.FormatWith("Package Read Initialized, TimeStamp: {0}", DateTime.UtcNow)); var package = writeRepo.GetById(apiRequest.PackageId, true); this.Info(() => StringExtensions.FormatWith("Package Read Completed, TimeStamp: {0}", DateTime.UtcNow)); if (package == null) { this.Error(() => StringExtensions.FormatWith("Package not found:", apiRequest.PackageId)); throw new LightstoneAutoException("Package could not be found"); } this.Info(() => StringExtensions.FormatWith("PackageBuilder Auth to UserManagement Initialized for {0}, TimeStamp: {1}", apiRequest.RequestId, DateTime.UtcNow)); var accountNumber = userManagementApi.Get(token, "/CustomerClient/{id}", new[] { new KeyValuePair<string, string>("id", apiRequest.CustomerClientId.ToString()) }, null); this.Info(() => StringExtensions.FormatWith("PackageBuilder Auth to UserManagement Completed for {0}, TimeStamp: {1}", apiRequest.RequestId, DateTime.UtcNow)); var responses = ((Package)package).ExecuteWithCarId(entryPoint, apiRequest.UserId, Context.CurrentUser.UserName, Context.CurrentUser.UserName, apiRequest.RequestId, accountNumber, apiRequest.ContractId, apiRequest.ContractVersion, apiRequest.DeviceType, apiRequest.FromIpAddress, "", apiRequest.SystemType, apiRequest.RequestFields, (double)package.CostOfSale, (double)package.RecommendedSalePrice, apiRequest.HasConsent); // Filter responses for cleaner api payload this.Info(() => StringExtensions.FormatWith("Package Response Filter Cleanup Initialized for {0}, TimeStamp: {1}", apiRequest.RequestId, DateTime.UtcNow)); var filteredResponse = new List<IProvideResponseDataProvider> { new ResponseMeta(apiRequest.RequestId, responses.ResponseState()) }; filteredResponse.AddRange(Mapper.Map<IEnumerable<IDataProvider>, IEnumerable<IProvideResponseDataProvider>>(responses)); this.Info(() => StringExtensions.FormatWith("Package Response Filter Cleanup Completed for {0}, TimeStamp: {1}", apiRequest.RequestId, DateTime.UtcNow)); integration.SendToBus(new PackageResponseMessage(package.Id, apiRequest.UserId, apiRequest.ContractId, accountNumber, filteredResponse.Any() ? filteredResponse.AsJsonString() : string.Empty, apiRequest.RequestId, Context != null ? Context.CurrentUser.UserName : "******")); this.Info(() => StringExtensions.FormatWith("Package ExecuteWithCarId Completed for {0}, TimeStamp: {1}", apiRequest.RequestId, DateTime.UtcNow)); return filteredResponse; }; Post[PackageBuilderApi.PackageRoutes.ProcessCreate.ApiRoute] = parameters => { var dto = this.Bind<PackageDto>(); dto.Id = dto.Id == new Guid() ? Guid.NewGuid() : dto.Id; // Required for acceptance tests where we specify the Id var dProviders = Mapper.Map<IEnumerable<DataProviderDto>, IEnumerable<DataProviderOverride>>(dto.DataProviders); publisher.Publish(new CreatePackage(dto.Id, dto.Name, dto.Description, dto.CostOfSale, dto.RecommendedSalePrice, dto.Notes, dto.PackageEventType, Mapper.Map<PackageDto, IEnumerable<Industry>>(dto), dto.State, dto.Owner, DateTime.UtcNow, null, dProviders)); ////RabbitMQ var metaEntity = Mapper.Map(dto, new PackageMessage()); var advancedBus = new TransactionBus(eBus); advancedBus.SendDynamic(metaEntity); return Response.AsJson(new { msg = "Success" }); }; Put[PackageBuilderApi.PackageRoutes.ProcessUpdate.ApiRoute] = parameters => { var dto = this.Bind<PackageDto>(); var dProviders = Mapper.Map<IEnumerable<DataProviderDto>, IEnumerable<DataProviderOverride>>(dto.DataProviders); publisher.Publish(new UpdatePackage(parameters.id, dto.Name, dto.Description, dto.CostOfSale, dto.RecommendedSalePrice, dto.Notes, dto.PackageEventType, Mapper.Map<PackageDto, IEnumerable<Industry>>(dto), dto.State, dto.Version, dto.Owner, dto.CreatedDate, DateTime.UtcNow, dProviders)); ////RabbitMQ var metaEntity = Mapper.Map(dto, new PackageMessage()); var advancedBus = new TransactionBus(eBus); advancedBus.SendDynamic(metaEntity); return Response.AsJson(new { msg = "Success, " + parameters.id + " edited" }); }; Put["/Packages/Clone/{id}/{cloneName}"] = parameters => { var packageToClone = Mapper.Map<IPackage, PackageDto>(writeRepo.GetById(parameters.id)); var dataProvidersToClone = Mapper.Map<IEnumerable<DataProviderDto>, IEnumerable<DataProviderOverride>>( packageToClone.DataProviders); var stateResolve = stateRepo.Where(x => x.Alias == "Draft") .Select(y => new State(y.Id, y.Name, y.Alias)); publisher.Publish(new CreatePackage(Guid.NewGuid(), parameters.cloneName, packageToClone.Description, packageToClone.CostOfSale, packageToClone.RecommendedSalePrice, packageToClone.Notes, packageToClone.PackageEventType, packageToClone.Industries, stateResolve.FirstOrDefault(), packageToClone.Owner, DateTime.UtcNow, null, dataProvidersToClone)); return Response.AsJson( new { msg = "Success, Package with ID: " + parameters.id + " has been cloned to package '" + parameters.cloneName + "'" }); }; Delete[PackageBuilderApi.PackageRoutes.ProcessDelete.ApiRoute] = parameters => { this.RequiresAnyClaim(new[] { RoleType.Admin.ToString(), RoleType.ProductManager.ToString(), RoleType.Support.ToString() }); publisher.Publish(new DeletePackage(new Guid(parameters.id))); return Response.AsJson(new { msg = "Success, " + parameters.id + " deleted" }); }; }
public override void Observe() { advancedBus = new TransactionBus(_bus); }
public UserModule(IBus bus, IAdvancedBus eBus, IUserRepository userRepository) { if (_defaultJsonMaxLength == 0) _defaultJsonMaxLength = JsonSettings.MaxJsonLength; //Hackeroonie - Required, due to complex model structures (Nancy default restriction length [102400]) JsonSettings.MaxJsonLength = Int32.MaxValue; Get["/Users/All"] = _ => Response.AsJson(Mapper.Map<IEnumerable<User>, IEnumerable<UserDto>>(userRepository)); Get["/Users"] = _ => { var search = Context.Request.Query["search"]; var offset = Context.Request.Query["offset"]; var limit = Context.Request.Query["limit"]; if (offset == null) offset = 0; if (limit == null) limit = 10; var model = this.Bind<DataTablesViewModel>(); var dto = Mapper.Map<IEnumerable<User>, IEnumerable<UserDto>>(userRepository.Where(x => x.IsActive != false));//.Search(Context.Request.Query["search[value]"].Value, model.Start, model.Length)); return Negotiate .WithView("Index") .WithMediaRangeModel(MediaRange.FromString("application/json"), new { data = dto.ToList() }); }; Get["/UserLookup/{filter}"] = _ => { var filter = (string)_.filter; var dto = Mapper.Map<IEnumerable<User>, IEnumerable<UserDto>>(userRepository.Where(x => x.IsActive == true && (x.Individual.Name.StartsWith(filter) || x.Individual.Surname.StartsWith(filter)))); return Negotiate .WithView("Index") .WithMediaRangeModel(MediaRange.FromString("application/json"), new { dto }); }; Get["/UserCustomers/{userId:guid}"] = _ => { var userId = (Guid)_.userId; var customers = userRepository.Where(x => x.Id == userId && x.IsActive == true).SelectMany(x => x.CustomerUsers.Select(cu => cu.Customer)); return Negotiate .WithView("Index") .WithMediaRangeModel(MediaRange.FromString("application/json"), Mapper.Map<IEnumerable<Customer>, IEnumerable<CustomerDto>>(customers)); }; Get["/Userlist"] = parameters => { var filter = ""; if (Context.Request.Query["q_word[]"].HasValue) filter = (string)Context.Request.Query["q_word[]"].Value.ToString(); var pageIndex = 0; var pageSize = 0; int.TryParse(Context.Request.Query["page_num"].Value, out pageIndex); int.TryParse(Context.Request.Query["per_page"].Value, out pageSize); Expression<Func<User, bool>> predicate = x => x.IsActive == true && x.UserType == UserType.Internal && (x.Individual.Name.StartsWith(filter) || x.Individual.Surname.StartsWith(filter)); var users = new PagedList<User>(userRepository, pageIndex != 0 ? pageIndex - 1 : pageIndex, pageSize == 0 ? 10 : pageSize, predicate); return Negotiate .WithView("Index") .WithMediaRangeModel(MediaRange.FromString("application/json"), new { result = Mapper.Map<IEnumerable<User>, IEnumerable<UserDto>>(users), cnt_whole = users.RecordsFiltered }); }; Get["/Users/Add"] = _ => View["Save", new UserDto()]; Get["/Users/{id:guid}"] = parameters => { var guid = (Guid)parameters.id; var dto = Mapper.Map<User, UserDto>(userRepository.Get(guid)); return View["Save", dto]; }; Get["/Users/Details/{id:guid}"] = parameters => { var guid = (Guid)parameters.id; var dto = Mapper.Map<User, UserDto>(userRepository.Get(guid)); return Response.AsJson(dto); }; Post["/Users"] = _ => { var dto = this.BindAndValidate<UserDto>(); dto.CreatedBy = Context.CurrentUser.UserName; dto.IsActive = true; if (dto.TrialExpiration == null) dto.TrialExpiration = DateTime.UtcNow.Date; if (ModelValidationResult.IsValid) { //var clientUsersDto = this.Bind<List<ClientUserDto>>(); //dto.ClientUsers = clientUsersDto; var entity = Mapper.Map(dto, userRepository.Get(dto.Id) ?? new User()); entity.HashPassword(dto.Password); bus.Publish(new CreateUpdateEntity(entity, "Create")); ////RabbitMQ var metaEntity = Mapper.Map(entity, new UserMessage()); var advancedBus = new TransactionBus(eBus); advancedBus.SendDynamic(metaEntity); return View["Index"]; } return View["Save", dto]; }; Put["/Users/{id}"] = parameters => { var dto = this.BindAndValidate<UserDto>(); dto.ModifiedBy = Context.CurrentUser.UserName; if (dto.ResetPassword != null) { dto.Password = dto.ResetPassword; } if (dto.TrialExpiration == null) dto.TrialExpiration = DateTime.UtcNow.Date; if (ModelValidationResult.IsValid) { //var clientUsersDto = this.Bind<List<ClientUserDto>>(); //dto.ClientUsers = clientUsersDto; var entity = Mapper.Map(dto, userRepository.Get(dto.Id)); if (dto.ResetPassword != null) entity.HashPassword(dto.Password); bus.Publish(new CreateUpdateEntity(entity, "Update")); ////RabbitMQ var metaEntity = Mapper.Map(entity, new UserMessage()); var advancedBus = new TransactionBus(eBus); advancedBus.SendDynamic(metaEntity); return View["Index"]; } return View["Save", dto]; }; Put["/Users/Lock/{id}"] = parameters => { var dto = this.Bind<CustomerDto>(); var entity = userRepository.Get(dto.Id); entity.Modified = DateTime.UtcNow; entity.ModifiedBy = Context.CurrentUser.UserName; entity.Lock(true); bus.Publish(new CreateUpdateEntity(entity, "Update")); return Response.AsJson("User has been locked"); }; Put["/Users/UnLock/{id}"] = parameters => { var dto = this.Bind<CustomerDto>(); var entity = userRepository.Get(dto.Id); entity.Modified = DateTime.UtcNow; entity.ModifiedBy = Context.CurrentUser.UserName; entity.Lock(false); bus.Publish(new CreateUpdateEntity(entity, "Update")); return Response.AsJson("User has been un-locked"); }; Delete["/Users/{id}"] = _ => { this.RequiresAnyClaim(new[] { RoleType.Admin.ToString(), RoleType.ProductManager.ToString(), RoleType.Support.ToString() }); var dto = this.Bind<UserDto>(); var entity = userRepository.Get(dto.Id); bus.Publish(new SoftDeleteEntity(entity)); return Response.AsJson("User has been soft deleted"); }; }