internal Result AddAsset(string customerId, AddAssetParams data) { var loggerManager = new LoggerManager(); var operationGuid = Guid.NewGuid().ToString(); try { loggerManager.InsertLogoRecord(nameof(AddAsset), nameof(LogLevel.Info), null, data.TransactionId, JsonConvert.SerializeObject(data)); var customerManager = new CustomerManager(); var customer = customerManager.GetCompanyByExternalId(customerId); var user = customerManager.GetCompanyFirstAdminByExternalId(customerId); var product = customerManager.GetProductByProductExternalId(data.ProductId); var diskName = data.AdditionalAttribute.FirstOrDefault(a => a.Name.Equals(nameof(CreateDiskSpaceData.DiskName))); var orderDemandManager = new OrderDemandManager(); var addAsset = new CreateDiskSpaceData { OrderDemandGuid = operationGuid, AssetGroupId = data.AssetId, CompanyId = customer.CompanyId, ProductId = product.ProductID, UserId = user.UserId, DiskName = diskName?.Value }; orderDemandManager.SaveOrderDemand(null, operationGuid, 0, (int)ProvisionType.CreateDiskSpace, (int)OrderDemandStates.Created, (int)OrderDemandType.Integrated, JsonConvert.SerializeObject(addAsset), data.TransactionId); return(new Result { IsCompleted = false, Success = true }); } catch (Exception ex) { loggerManager.InsertLogoRecord(nameof(AddAsset), nameof(LogLevel.Error), ex.Message + " " + ex.StackTrace, operationGuid, JsonConvert.SerializeObject(data)); return(new Result { IsCompleted = true, Success = false, Message = ex.Message }); } }
public async Task <Result> AddAssetAsync(string customerId, AddAssetParams data) { try { var company = await _dataService.CompanyService.ExternalGetAsync(customerId); if (_trendMicroManager.GetUsersCount(company.ApplicationCustomerID) == 0) { var applicationCustomerId = await _trendMicroManager.CreateCustomerAsync(customerId); return(await _trendMicroManager.CreateSubscriptionAsync(applicationCustomerId, data.Quantity, customerId, _settings.ServicePlanId, data.AssetId)); } else { var subscription = await _trendMicroManager.GetSubscriptionAsync(customerId); if (subscription.Licenses[0].LicenseExpirationDate < DateTime.Now) { await _trendMicroManager.ReactivateSubscriptionAsync(customerId); } var ret = await _trendMicroManager.UpdateSubscriptionAsync(data.Quantity, customerId, _settings.ServicePlanId); var user = await _dataService.UserService.ExternalGetAsync(customerId); var role = await _dataService.RolesService.GetAsync((int)Role.Admin); var customer = await _dataService.CompanyService.ExternalGetAsync(customerId); var userRole = await _dataService.UserRoleService.GetByUserIdAndRoleAsync(user.Id, role.Id); if (userRole == null) { userRole = new UserRole { Quantity = data.Quantity, RoleId = role.Id, UserId = user.Id }; _dataService.UserRoleService.Add(userRole); } else { userRole.Quantity = data.Quantity; _dataService.UserRoleService.Update(userRole); } customer.IsDeleted = false; customer.IsSuspended = false; _dataService.CompanyService.Update(customer); await _dataService.SaveChangesAsync(); return(ret); } } catch (Exception ex) { await _dataService.LogDataService.InsertLogoRecordAsync(nameof(AddAssetAsync), nameof(Enums.LogLevel.Error), ex.Message, data.TransactionId, JsonConvert.SerializeObject(data)); return(new Result(false, ex.Message)); } }