Beispiel #1
0
        public IActionResult Create([FromBody] SignUpDto signUpDto)
        {
            Notification notification = new Notification();
            bool         uowStatus    = false;

            try
            {
                uowStatus = _unitOfWork.BeginTransaction();

                Customer customer = _customerAssembler.FromSignUpDtoToCustomer(signUpDto);
                notification = customer.validateForSave();

                if (notification.hasErrors())
                {
                    return(StatusCode(StatusCodes.Status400BadRequest, notification.ToString()));
                }

                _customerRepository.Create(customer);

                User user = _userAssembler.FromSignUpDtoToUser(signUpDto);
                user.RoleId   = (long)Role.Owner;
                user.Customer = customer;
                _userRepository.Create(user);

                Project project = _projectAssembler.FromSignUpDtoToProject(signUpDto);
                project.Customer = customer;

                _projectRepository.Create(project);

                _unitOfWork.Commit(uowStatus);

                var message = "Customer, user and project created!";
                KipubitRabbitMQ.SendMessage(message);
                return(StatusCode(StatusCodes.Status201Created, new ApiStringResponseDto(message)));
            }
            catch (Exception ex)
            {
                _unitOfWork.Rollback(uowStatus);
                Console.WriteLine(ex.StackTrace);
                var message = "Internal Server Error";
                KipubitRabbitMQ.SendMessage(message);
                return(StatusCode(StatusCodes.Status500InternalServerError, new ApiStringResponseDto(message)));
            }
        }