Ejemplo n.º 1
0
        /// <summary>
        /// Registeres a new account for an employee
        /// </summary>
        /// <param name="registerAccountRequest"></param>
        /// <returns></returns>
        public async Task <AlpApiResponse> RegisterAccount(RegisterAccountRequest registerAccountRequest)
        {
            var response = new AlpApiResponse();

            try
            {
                _logger.LogDebug(new
                {
                    action = nameof(RegisterAccount),
                    registerAccountRequest.EmployeeId,
                    registerAccountRequest.Username
                }.ToString());

                if (!registerAccountRequest.Validate())
                {
                    response.Success = false;
                    response.Message = "Hiba az új felhasználó adatainak validálása során!";
                    return(response);
                }

                var entity = await _context.Employee.FirstOrDefaultAsync(employee => employee.EmployeeId == registerAccountRequest.EmployeeId);

                if (entity == null)
                {
                    response.Success = false;
                    response.Message = "Nem található a választott felhasználó!";
                    return(response);
                }

                if (!entity.DepartmentId.HasValue)
                {
                    response.Success = false;
                    response.Message = "Csak akkor adható hozzáférés a munkavállónak a leltár rendszerhez, ha hozzá van rendelve egy osztályhoz!";
                    return(response);
                }

                var accu = await _context.Account.FirstOrDefaultAsync(ac => ac.EmployeeId == registerAccountRequest.EmployeeId);

                if (accu != null)
                {
                    response.Success = false;
                    response.Message = "Ehhez a munkavállalóhoz már tartozik felhasználó!";
                }

                var entityWithUserName = await _context.Account.Include(acc => acc.Employee).FirstOrDefaultAsync(acc => acc.UserName == registerAccountRequest.Username);

                if (entityWithUserName != null)
                {
                    response.Success = false;
                    response.Message = $"Ilyen felhasználónevű felhasználó már szerepel a rendszerben: {entityWithUserName.Employee?.EmployeeName}";
                    return(response);
                }

                var account = new Account
                {
                    EmployeeId = entity.EmployeeId,
                    UserName   = registerAccountRequest.Username,
                    Password   = registerAccountRequest.Password,
                    RoleId     = (int)RoleType.DepartmentInventoryOperator
                };

                await _context.Account.AddAsync(account);

                await _context.SaveChangesAsync();
            }
            catch (Exception e)
            {
                _logger.LogError(new
                {
                    exception             = e,
                    message               = e.Message,
                    innerException        = e,
                    innerExceptionMessage = e.InnerException?.Message
                }.ToString());
                response.Message = e.Message;
                response.Success = false;
            }

            return(response);
        }