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)); } }
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))); } }