public async Task <ExecutionResult> Execute(ExecuteContext <IAssignLicenseToPartnerPlatformUserArguments> context) { var arguments = context.Arguments; var office365User = await _office365DbUserService.GetOffice365DatabaseUserAsync(arguments.UserPrincipalName); if (office365User == null) { throw new Exception($"No Office365 user with upn {arguments.UserPrincipalName}"); } var office365Offer = await _office356DbOfferService .GetOffice365OfferAsync(arguments.CloudPlusProductIdentifier); await _office365LicenseService .AssignUserLicense(arguments.Office365CustomerId, office365User.Office365UserId, office365Offer.Sku); return(context.Completed()); }
public async Task <ExecutionResult> Execute(ExecuteContext <IRestorePartnerPlatformUserArguments> context) { var arguments = context.Arguments; var office365User = await _office365DbUserService.GetOffice365DatabaseUserAsync(arguments.UserPrincipalName); if (office365User == null) { throw new Exception($"No Office365 user with upn {arguments.UserPrincipalName}"); } var office365Customer = await _office365DbCustomerService.GetOffice365CustomerWithIncludesAsync(arguments.CompanyId); await _office365UserService.RestoreOffice365UserAsync(office365User.Office365UserId, office365Customer.Office365CustomerId); return(context.Completed(new RestorePartnerPlatformUserLog { Office365UserId = office365User.Office365UserId, Office365CustomerId = office365Customer.Office365CustomerId })); }
public async Task Execute(ConsumeContext <IOffice365UserAssignLicenseCommand> context) { var builder = new RoutingSlipBuilder(NewId.NextGuid()); var command = context.Message; var customer = await _office365DbCustomerService.GetOffice365CustomerAsync(command.CompanyId); var o365UserId = await _office365UserService.GetOffice365UserIdAsync(command.UserPrincipalName, customer.Office365CustomerId); var o365DbUser = await _office365DbUserService.GetOffice365DatabaseUserAsync(command.UserPrincipalName); builder.AddVariable("Office365CustomerId", customer.Office365CustomerId); if (o365UserId == null) { builder.AddActivity(Office365ServiceConstants.ActivityCreateOffice365PartnerPlatformUser, _activityConfigurator.GetActivityExecuteUri(context, typeof(ICreatePartnerPlatformUserActivity)), _activityOffice365UserArgumentsMapper.MapCreatePartnerPlatformUserArguments(command)); } if (o365DbUser == null) { if (o365UserId != null) { builder.AddVariable("Office365UserId", o365UserId); } builder.AddActivity(Office365ServiceConstants.ActivityCreateOffice365DatabaseUser, _activityConfigurator.GetActivityExecuteUri(context, typeof(ICreateDatabaseUserActivity)), _activityOffice365UserArgumentsMapper.MapCreateOffice365DatabaseUserArguments(command)); } builder.AddActivity(Office365ServiceConstants.ActivityAssignLicenseOffice365PartnerPlatformUser, _activityConfigurator.GetActivityExecuteUri(context, typeof(IAssignLicenseToPartnerPlatformUserActivity)), _activityOffice365UserArgumentsMapper.MapAssignLicenseOffice365PartnerPlatformUserArguments(command)); builder.AddActivity(Office365ServiceConstants.ActivityAssignLicenseOffice365DatabaseUser, _activityConfigurator.GetActivityExecuteUri(context, typeof(IAssignLicenseToDatabaseUserActivity)), _activityOffice365UserArgumentsMapper.MapAssignLicenseOffice365DatabaseUserArguments(command)); if (command.UserRoles.Any()) { builder.AddActivity(Office365ServiceConstants.ActivityAssignUserRoles, _activityConfigurator.GetActivityExecuteUri(context, typeof(IAssignUserRolesActivity)), _activityOffice365UserArgumentsMapper.MapAssignUserRolesArguments(command)); } builder.AddActivity(Office365ServiceConstants.ActivitySendOffice365UserSetupEmail, _activityConfigurator.GetActivityExecuteUri(context, typeof(ISendUserSetupEmailActivity)), _activityOffice365UserArgumentsMapper.MapSendOffice365UserSetupEmailArguments(command)); builder.AddVariable("userPrincipalName", context.Message.UserPrincipalName); builder.AddVariable("workflowActivityType", WorkflowActivityType.Office365UserAssignLicense.ToString()); builder.AddSubscription(Office365ServiceConstants.QueueOffice365RoutingSlipEventUri, RoutingSlipEvents.Completed | RoutingSlipEvents.Faulted | RoutingSlipEvents.ActivityCompleted | RoutingSlipEvents.ActivityFaulted | RoutingSlipEvents.ActivityCompensated | RoutingSlipEvents.ActivityCompensationFailed); var routingSlip = builder.Build(); await context.Send <IRoutingSlipStarted>(Office365ServiceConstants.QueueOffice365RoutingSlipStartedUri, new { builder.TrackingNumber, CreateTimestamp = DateTime.UtcNow, Arguments = context.Message, WorkflowActivityType = WorkflowActivityType.Office365UserAssignLicense.ToString() }); await context.Execute(routingSlip); }