示例#1
0
        public async Task <DownloadImageInput> DownloadImage(DownloadImageInput input)
        {
            var output    = new DownloadImageInput();
            var inputJson = new StringContent(JsonSerializer.Serialize(input, new JsonSerializerOptions()), Encoding.UTF8, "application/json");
            var client    = _clientFactory.CreateClient();
            var response  = await client.PostAsync(_appConfiguration["Machine:downloadImageAPI"], inputJson);

            if (response.IsSuccessStatusCode)
            {
                using (var responseStream = await response.Content.ReadAsStreamAsync())
                {
                    output = await JsonSerializer.DeserializeAsync <DownloadImageInput>(responseStream);
                }
            }

            return(output);
        }
示例#2
0
        public async Task <bool> UploadUsers([FromBody] List <UploadMachineUserInput> input)
        {
            try
            {
                foreach (var item in input)
                {
                    //item.Person.UserCode = 22;
                    //item.Person.PName = "test move22";
                    var inputJson = new StringContent(
                        JsonSerializer.Serialize(item, new JsonSerializerOptions()), Encoding.UTF8, "application/json");
                    var client   = _clientFactory.CreateClient();
                    var response = await client.PostAsync(_appConfiguration["Machine:uploadUserAPI"], inputJson);

                    if (response.IsSuccessStatusCode)
                    {
                        using (var responseStream = await response.Content.ReadAsStreamAsync())
                        {
                            await JsonSerializer.DeserializeAsync <string>(responseStream);
                        }

                        //download image
                        var downloadImageInput = new DownloadImageInput();
                        downloadImageInput.UserCode    = item.Person.UserCode;
                        downloadImageInput.MachineData = item.MachineData;
                        var uploadImageResponse = await DownloadImage(downloadImageInput);

                        downloadImageInput.Image        = Convert.ToBase64String(uploadImageResponse.Datas);
                        uploadImageResponse.MachineData = item.MachineData;
                        uploadImageResponse.UserCode    = item.Person.UserCode;
                        await UploadImage(uploadImageResponse);
                    }
                }
            }
            catch (Exception)
            {
                return(false);
            }

            return(true);
        }
示例#3
0
        protected virtual async Task CreateUserAsync(CreateOrUpdateUserInput input)
        {
            if (AbpSession.TenantId.HasValue)
            {
                await _userPolicy.CheckMaxUserCountAsync(AbpSession.GetTenantId());
            }
            var fingerCode = Convert.ToInt32(input.User.FingerCode);
            var machineId  = input.User.MachineId;
            var uploadUser = input.User.UploadUser;
            var userImage  = input.User.UserImage;
            var user       = ObjectMapper.Map <User>(input.User); //Passwords is not mapped (see mapping configuration)

            user.TenantId = AbpSession.TenantId;

            //Set password
            if (input.SetRandomPassword)
            {
                var randomPassword = await _userManager.CreateRandomPassword();

                user.MobilePassword = EnryptString(randomPassword);
                user.Password       = _passwordHasher.HashPassword(user, randomPassword);
                input.User.Password = randomPassword;
            }
            else if (!input.User.Password.IsNullOrEmpty())
            {
                await UserManager.InitializeOptionsAsync(AbpSession.TenantId);

                foreach (var validator in _passwordValidators)
                {
                    CheckErrors(await validator.ValidateAsync(UserManager, user, input.User.Password));
                }
                user.MobilePassword = EnryptString(input.User.Password);
                user.Password       = _passwordHasher.HashPassword(user, input.User.Password);
            }

            user.ShouldChangePasswordOnNextLogin = input.User.ShouldChangePasswordOnNextLogin;

            //Assign roles
            user.Roles = new Collection <UserRole>();
            foreach (var roleName in input.AssignedRoleNames)
            {
                var role = await _roleManager.GetRoleByNameAsync(roleName);

                user.Roles.Add(new UserRole(AbpSession.TenantId, user.Id, role.Id));
            }

            //Assign Locations
            user.Locations = new Collection <UserLocation>();
            foreach (var assignedLocation in input.AssignedLocations)
            {
                var locationToAdd = await _locationRepository.FirstOrDefaultAsync(x => x.Id == assignedLocation.LocationId);

                user.Locations.Add(new UserLocation(user.Id, locationToAdd.Id, assignedLocation.FromDate, assignedLocation.ToDate));
            }

            CheckErrors(await UserManager.CreateAsync(user));
            await CurrentUnitOfWork.SaveChangesAsync(); //To get new user's Id.

            //Notifications
            await _notificationSubscriptionManager.SubscribeToAllAvailableNotificationsAsync(user.ToUserIdentifier());

            await _appNotifier.WelcomeToTheApplicationAsync(user);

            //Organization Units
            await UserManager.SetOrganizationUnitsAsync(user, input.OrganizationUnits.ToArray());

            //Send activation email
            if (input.SendActivationEmail)
            {
                user.SetNewEmailConfirmationCode();
                await _userEmailer.SendEmailActivationLinkAsync(
                    user,
                    AppUrlService.CreateEmailActivationUrlFormat(AbpSession.TenantId),
                    input.User.Password
                    );
            }

            //add user shifts
            //foreach (var userShiftModel in input.User.UserShifts)
            //{
            //    //add user shift
            //    await _userShiftRepository.InsertAsync(ObjectMapper.Map<UserShift>(userShiftModel.UserShift));
            //}
            foreach (var userShiftModel in input.User.OverrideShifts)
            {
                //add user shift
                await _overrideShiftRepository.InsertAsync(ObjectMapper.Map <OverrideShift>(userShiftModel.OverrideShift));
            }

            //add user to machine
            var userToUpload = new UploadMachineUserInput();

            userToUpload.Person          = new Person();
            userToUpload.MachineData     = new MachineData();
            userToUpload.Person.UserCode = fingerCode;
            var machine = await _machineRepository.FirstOrDefaultAsync(x => x.Id == machineId);

            userToUpload.MachineData.IP   = machine.IpAddress;
            userToUpload.MachineData.SN   = machine.SubNet;
            userToUpload.MachineData.Port = machine.Port;

            var inputJson = new StringContent(
                System.Text.Json.JsonSerializer.Serialize(userToUpload, new System.Text.Json.JsonSerializerOptions()), System.Text.Encoding.UTF8, "application/json");
            var client   = _clientFactory.CreateClient();
            var response = await client.PostAsync(_appConfiguration["Machine:uploadUserAPI"], inputJson);

            if (response.IsSuccessStatusCode)
            {
                using (var responseStream = await response.Content.ReadAsStreamAsync())
                {
                    await System.Text.Json.JsonSerializer.DeserializeAsync <string>(responseStream);
                }

                var downloadImageInput = new DownloadImageInput();
                var clearImage         = userImage.Split(",").ToList <string>();
                downloadImageInput.Datas       = Convert.FromBase64String(clearImage[1]);
                downloadImageInput.MachineData = userToUpload.MachineData;
                downloadImageInput.UserCode    = userToUpload.Person.UserCode;
                await UploadImage(downloadImageInput);
            }
        }