Exemple #1
0
        public async Task <IActionResult> InitiateGdprExportProcess([FromBody] InitiateGdprProcessCommand cmd)
        {
            try
            {
                cmd = await AppendUserDataToCommand(cmd);

                cmd.ProcessKey = GdprProcessEnum.Export;
            }
            catch (ArgumentNullException e)
            {
                _logger.LogWarning(e, "Argument for GDPR process initialization is not defined.");
                return((IActionResult)BadRequest(new { message = e.Message }));
            }
            catch (Exception e)
            {
                _logger.LogError(e, "An error occurred while initializing GDPR process.");
                return(StatusCode(500));
            }

            var initiateProcessCommand = new IdentifiedCommand <InitiateGdprProcessCommand, string>(cmd, new Guid());
            var commandResult          = await _mediator.Send(initiateProcessCommand);

            return(commandResult == null ? (IActionResult)Ok() : (IActionResult)BadRequest(new { message = commandResult }));
        }
Exemple #2
0
        private async Task <InitiateGdprProcessCommand> AppendUserDataToCommand(InitiateGdprProcessCommand cmd)
        {
            cmd.UserType = this.User.Claims.Where(x => x.Type == "user_type").FirstOrDefault()?.Value;
            var username = IsCustomer(cmd.UserType) ? this.User.Claims.Where(x => x.Type == "preferred_username").FirstOrDefault()?.Value : cmd.Username;

            if (string.IsNullOrEmpty(username))
            {
                throw new ArgumentNullException("Username is not available");
            }
            var userData = await _userInfoRetrieval.GetUserData(username);

            if (string.IsNullOrEmpty(userData.Email))
            {
                throw new ArgumentNullException("Email is not available");
            }
            cmd.Username       = userData.Username;
            cmd.CustomerNumber = userData.CustomerNumber;
            cmd.Email          = userData.Email;
            cmd.PhoneNumber    = userData.PhoneNumber;
            cmd.FirstName      = userData.FirstName;
            cmd.LastName       = userData.LastName;
            cmd.Initiator      = this.User.Claims.Where(x => x.Type == "preferred_username").FirstOrDefault()?.Value;
            return(cmd);
        }