Пример #1
0
        public IActionResult SeedSystemData()
        {
            try
            {
                if (!ClientKeyIsValid())
                {
                    return(Unauthorized());
                }

                if (!UserIsAuthenticatedAndAuthorized(MethodBase.GetCurrentMethod()))
                {
                    return(Unauthorized());
                }

                var taskResults = _seedSystemDataTask.DoTask(null);

                return(taskResults.HasException ?
                       Error(taskResults.Exception) :
                       Json(taskResults.Success));
            }
            catch (Exception e)
            {
                return(Error(e));
            }
        }
Пример #2
0
        public TaskResult <Login> DoTask(Login login)
        {
            try
            {
                var existingLogin = _dbContext.Logins.Where(l => l.AuthenticationToken == login.AuthenticationToken)
                                    .Include(l => l.User)
                                    .SingleOrDefault();

                if (existingLogin != null)
                {
                    return(new TaskResult <Login>(existingLogin));
                }

                var user = _dbContext.Users.Where(u => u.AuthenticationId == login.AuthenticationId)
                           .Include(u => u.Person).ThenInclude(p => p.Address).ThenInclude(a => a.Country)
                           .Include(u => u.Publisher).ThenInclude(p => p.Address).ThenInclude(a => a.Country)
                           .Include(u => u.Publisher).ThenInclude(p => p.PerformingRightsOrganization).ThenInclude(r => r.Country)
                           .Include(u => u.RecordLabel).ThenInclude(p => p.Address).ThenInclude(a => a.Country)
                           .Include(u => u.PerformingRightsOrganization).ThenInclude(r => r.Country)
                           .SingleOrDefault();

                if (user == null)
                {
                    if (login.AuthenticationId == ApplicationSettings.Mail.From)
                    {
                        user = new User {
                            AuthenticationId = login.AuthenticationId, Type = UserType.SystemAdministrator
                        };
                        _dbContext.Users.Add(user);
                        _dbContext.SaveChanges();

                        var installation = _getInstallationTask.DoTask(null);
                        if (installation.HasNoData)
                        {
                            _seedSystemDataTask.DoTask(null);
                        }
                    }
                    else
                    {
                        throw new TaskException(SystemMessage("USER_NOT_FOUND"));
                    }
                }

                login.User    = null;
                login.UserId  = user.Id;
                login.LoginAt = DateTime.UtcNow;

                _dbContext.Logins.Add(login);
                _dbContext.SaveChanges();

                login.User = user;

                return(new TaskResult <Login>(login));
            }
            catch (Exception e)
            {
                return(new TaskResult <Login>(new TaskException(e)));
            }
        }