public override object MutateAndGetPayload(MutationInputs inputs, ResolveFieldContext <object> context)
        {
            var organizationId = inputs.Get <int>("organizationId");
            var processId      = inputs.Get <int?>("processId");
            var name           = inputs.Get <string>("name");
            var organization   = _organizationService.GetOrganization(organizationId);
            var pipeline       = new OnboardingPipeline
            {
                Name = name,
            };

            if (processId.HasValue)
            {
                var process = _processService.GetProcess(processId.Value);

                pipeline.OnboardingProcess = process;
            }

            organization.OnboardingPipelines.Add(pipeline);

            _organizationService.Update(organization);

            return(new
            {
                organization,
            });
        }
示例#2
0
        public override async Task <object> MutateAndGetPayload(MutationInputs inputs, ResolveFieldContext <object> context)
        {
            var username   = inputs.Get <string>("username");
            var rememberMe = inputs.Get <bool>("rememberMe");
            var password   = inputs.Get <string>("password");

            var result = await _signInManager.PasswordSignInAsync(username, password, rememberMe, false);

            if (result.Succeeded)
            {
                _logger.LogInformation(1, "User logged in.");

                var user = new ApplicationUser
                {
                    UserName = username,
                };

                return(new
                {
                    user
                });
            }

            _validationProvider.AddError("_error", "Invalid login attempt.");

            return(null);
        }
        public override async Task <object> MutateAndGetPayload(MutationInputs inputs, ResolveFieldContext <object> context)
        {
            var recaptcha  = inputs.Get <string>("recaptcha");
            var email      = inputs.Get <string>("email");
            var listId     = Env.GetString("MAILCHIMP_LISTID");
            var parameters = new Dictionary <string, string> {
                { "secret", Env.GetString("RECAPTCHA_SECRET") },
                { "response", recaptcha }
            };
            var encodedContent = new FormUrlEncodedContent(parameters);

            using (var client = new HttpClient())
            {
                var response = await client.PostAsync("https://www.google.com/recaptcha/api/siteverify", encodedContent);

                var recpatcha = await response.Content.ReadAsAsync <Recaptcha>();

                response.EnsureSuccessStatusCode();

                if (!recpatcha.Success)
                {
                    return(null);
                }
            }

            var member = new Member {
                EmailAddress = email, StatusIfNew = Status.Subscribed
            };

            await _mailChimpManager.Members.AddOrUpdateAsync(listId, member);

            return(null);
        }
        public override async Task <object> MutateAndGetPayload(MutationInputs inputs, ResolveFieldContext <object> context)
        {
            var recaptcha  = inputs.Get <string>("recaptcha");
            var email      = inputs.Get <string>("email");
            var listId     = _configuration["mailChimp:reggestId"];
            var parameters = new Dictionary <string, string> {
                { "secret", _configuration["recaptcha:secret"] },
                { "response", recaptcha }
            };
            var encodedContent = new FormUrlEncodedContent(parameters);

            using (var client = new HttpClient())
            {
                var response = await client.PostAsync(_configuration["recaptcha:verifyUrl"], encodedContent);

                var recpatcha = await response.Content.ReadAsAsync <Recaptcha>();

                response.EnsureSuccessStatusCode();

                if (!recpatcha.Success)
                {
                    return(null);
                }
            }

            var member = new Member {
                EmailAddress = email, StatusIfNew = Status.Subscribed
            };

            await _mailChimpManager.Members.AddOrUpdateAsync(listId, member);

            return(null);
        }
示例#5
0
        public override object MutateAndGetPayload(MutationInputs inputs, ResolveFieldContext <object> c)
        {
            var body = inputs.Get <string>("body");
            var originalCommentId = inputs.Get <string>("originalCommentId");
            var audioId           = inputs.Get <int>("audioId");
            var context           = c.UserContext.As <Task <Context> >();

            context.Wait();
            var audio   = _audioService.GetAudio(audioId);
            var comment = new Models.Comment
            {
                Id              = Guid.NewGuid().ToString(),
                User            = context.Result.CurrentUser,
                Body            = body,
                Audio           = audio,
                OriginalComment = originalCommentId != null?_commentService.AllComments.GetValueOrDefault(originalCommentId, null) : null,
            };

            _commentService.Add(comment);

            return(new
            {
                comment
            });
        }
示例#6
0
        public override async Task <object> MutateAndGetPayload(MutationInputs inputs, ResolveFieldContext <object> context)
        {
            var username = inputs.Get <string>("username");
            var email    = inputs.Get <string>("email");
            var password = inputs.Get <string>("password");
            var user     = new ApplicationUser
            {
                UserName = username,
                Email    = email
            };

            var result = await _userManager.CreateAsync(user, password);

            if (result.Succeeded)
            {
                var code = await _userManager.GenerateEmailConfirmationTokenAsync(user);

                var emailConfirmationToken = System.Web.HttpUtility.UrlEncode(code);

                _logger.LogInformation(3, "User created a new account with password.");

                return(new
                {
                    user,
                    emailConfirmationToken
                });
            }

            foreach (var identityError in result.Errors)
            {
                _validationProvider.AddError("_error", identityError.Description);
            }

            return(null);
        }
示例#7
0
        public override async Task <object> MutateAndGetPayload(MutationInputs inputs, ResolveFieldContext <object> context)
        {
            var email   = inputs.Get <string>("email");
            var subject = inputs.Get <string>("subject");
            var message = inputs.Get <string>("message");

            await _emailSender.SendEmailAsync(email, subject, message);

            return(null);
        }
示例#8
0
        public override object MutateAndGetPayload(MutationInputs inputs, ResolveFieldContext <object> context)
        {
            var id     = inputs.Get <int>("id");
            var liked  = inputs.Get <bool>("liked");
            var user   = context.UserContext.As <Context>().CurrentUser;
            var rating = _audioService.Rate(id, user.Id, liked);

            return(new
            {
                rating
            });
        }
示例#9
0
 public override object MutateAndGetPayload(
     MutationInputs inputs,
     ResolveFieldContext <object> context
     )
 {
     return(new {
         Viewer = Database.GetViewer(),
         Todo = Database.RenameTodo(
             Node.FromGlobalId(inputs.Get <string>("id")).Id,
             inputs.Get <string>("text")
             ),
     });
 }
示例#10
0
        public override async Task <object> MutateAndGetPayload(MutationInputs inputs, ResolveFieldContext <object> c)
        {
            var id      = inputs.Get <int>("id");
            var liked   = inputs.Get <bool>("liked");
            var context = await c.UserContext.As <Task <Context> >();

            var rating = _audioService.Rate(id, context.CurrentUser.Id, liked);

            return(new
            {
                rating
            });
        }
示例#11
0
 public override object MutateAndGetPayload(
     MutationInputs inputs,
     ResolveFieldContext <object> context
     )
 {
     return(new {
         Viewer = Database.GetViewer(),
         Todo = Database.ChangeTodoStatus(
             Node.FromGlobalId(inputs.Get <string>("id")).Id,
             inputs.Get <bool>("complete")
             ),
     });
 }
示例#12
0
        public override object MutateAndGetPayload(
            MutationInputs inputs,
            ResolveFieldContext <object> context
            )
        {
            Database.RemoveTodo(
                Node.FromGlobalId(inputs.Get <string>("id")).Id
                );

            return(new {
                Viewer = Database.GetViewer(),
                deletedTodoId = inputs.Get <string>("id"),
            });
        }
        public override object MutateAndGetPayload(MutationInputs inputs, ResolveFieldContext <object> context)
        {
            var id       = inputs.Get <int>("id");
            var name     = inputs.Get <string>("name");
            var pipeline = _pipelineService.GetPipeline(id);

            pipeline.Name = name;

            _pipelineService.Update(pipeline);

            return(new {
                organization = pipeline.Organization,
            });
        }
示例#14
0
        public override object MutateAndGetPayload(MutationInputs inputs, ResolveFieldContext <object> context)
        {
            var id   = inputs.Get <int>("id");
            var name = inputs.Get <string>("name");
            var step = _stepService.GetStep(id);

            step.Name = name;

            _stepService.Update(step);

            return(new {
                pipeline = step.OnboardingPipeline,
            });
        }
示例#15
0
        public override async Task <object> MutateAndGetPayload(MutationInputs inputs, ResolveFieldContext <object> context)
        {
            var memberId     = inputs.Get <int>("memberId");
            var processId    = inputs.Get <int>("processId");
            var member       = _memberService.GetMember(memberId);
            var userContext  = context.UserContext.As <Context>();
            var newPipelines = new List <OnboardingPipeline>();
            var token        = userContext.HttpContext.Session.GetString("OAuthToken");

            if (token == null)
            {
                throw new NullReferenceException("OAuthToken is null");
            }

            _client.Credentials = new Credentials(token);

            var process = _processService.GetProcess(processId);

            foreach (var pipeline in process.OnboardingPipelines)
            {
                var newOnboardingSteps = new List <OnboardingStep>();

                foreach (var step in pipeline.OnboardingSteps)
                {
                    var newStep = await GetOnboardingStep(process.Organization, member, step);

                    newOnboardingSteps.Add(newStep);
                }

                newPipelines.Add(new OnboardingPipeline
                {
                    Name            = pipeline.Name,
                    OnboardingSteps = newOnboardingSteps,
                });
            }

            member.OnboardingProcesses.Add(new OnboardingProcess
            {
                Name = process.Name,
                OnboardingPipelines = newPipelines,
                Organization        = process.Organization
            });

            _memberService.Update(member);

            return(new {
                member,
            });
        }
示例#16
0
        public override async Task <object> MutateAndGetPayload(MutationInputs inputs, ResolveFieldContext <object> context)
        {
            var organizationId = inputs.Get <int>("organizationId");
            var name           = inputs.Get <string>("name");
            var pipelineIds    = inputs.Get("pipelineIds", new object[0]).Cast <int>().ToList();
            var organization   = _organizationService.GetOrganization(organizationId);
            var pipelines      = _pipelineService.GetPipelines().Where(x => pipelineIds.Any(z => z == x.Id)).ToList();
            var userContext    = context.UserContext.As <Context>();
            var newPipelines   = new List <OnboardingPipeline>();
            var token          = userContext.HttpContext.Session.GetString("OAuthToken");

            if (token == null)
            {
                throw new NullReferenceException("OAuthToken is null");
            }

            _client.Credentials = new Credentials(token);

            foreach (var pipeline in pipelines)
            {
                var newOnboardingSteps = new List <OnboardingStep>();

                foreach (var step in pipeline.OnboardingSteps)
                {
                    var newStep = await GetOnboardingStep(organization, step);

                    newOnboardingSteps.Add(newStep);
                }

                newPipelines.Add(new OnboardingPipeline
                {
                    Name            = pipeline.Name,
                    OnboardingSteps = newOnboardingSteps,
                });
            }
            var process = new OnboardingProcess
            {
                Name                = name,
                Organization        = organization,
                OnboardingPipelines = newPipelines
            };

            _processService.Add(process);

            return(new {
                organization
            });
        }
示例#17
0
        public override async Task <object> MutateAndGetPayload(MutationInputs inputs, ResolveFieldContext <object> context)
        {
            var userId   = inputs.Get <string>("userId");
            var token    = inputs.Get <string>("token");
            var password = inputs.Get <string>("password");
            var user     = await _userManager.FindByIdAsync(userId);

            var result = await _userManager.ResetPasswordAsync(user, token, password);

            foreach (var identityError in result.Errors)
            {
                _validationProvider.AddError("_error", identityError.Description);
            }

            return(null);
        }
示例#18
0
        public override object MutateAndGetPayload(MutationInputs inputs, ResolveFieldContext <object> context)
        {
            var id     = inputs.Get <int>("id");
            var answer = _answerService.GetAnswer(id);

            return(new
            {
                answer
            });
        }
示例#19
0
        public override object MutateAndGetPayload(MutationInputs inputs, ResolveFieldContext <object> context)
        {
            var audioId           = inputs.Get <int?>("audioId");
            var reason            = inputs.Get <string>("reason");
            var additionalDetails = inputs.Get <string>("additionalDetails");

            var flag = new Models.Flag
            {
                AudioId           = audioId,
                Reason            = reason,
                AdditionalDetails = additionalDetails,
            };

            _flagService.Add(flag);

            return(new
            {
                flag
            });
        }
示例#20
0
        public override async Task <object> MutateAndGetPayload(MutationInputs inputs, ResolveFieldContext <object> context)
        {
            var pipelineId       = inputs.Get <int>("pipelineId");
            var memberId         = inputs.Get <int?>("memberId");
            var organizationName = inputs.Get <string>("organizationName");
            var name             = inputs.Get <string>("name");
            var pipeline         = _pipelineService.GetPipeline(pipelineId);
            var userContext      = context.UserContext.As <Context>();
            var token            = userContext.HttpContext.Session.GetString("OAuthToken");

            if (token == null)
            {
                throw new NullReferenceException("OAuthToken is null");
            }

            _client.Credentials = new Credentials(token);

            var newIssue = new NewIssue(name);

            if (memberId.HasValue)
            {
                var member = _memberService.GetMember(memberId.Value);

                newIssue.Assignees.Add(member.Name);
            }

            var issue = await _client.Issue.Create(organizationName, Constants.RepositoryName, newIssue);

            pipeline.OnboardingSteps.Add(new OnboardingStep
            {
                Id          = issue.Id,
                Name        = name,
                IssueNumber = issue.Number
            });

            _pipelineService.Update(pipeline);

            return(new {
                pipeline
            });
        }
        public override object MutateAndGetPayload(MutationInputs inputs, ResolveFieldContext <object> context)
        {
            var id           = inputs.Get <int>("id");
            var pipeline     = _pipelineService.GetPipeline(id);
            var organization = pipeline.Organization;

            _pipelineService.Remove(pipeline);

            return(new {
                organization
            });
        }
示例#22
0
        public override object MutateAndGetPayload(MutationInputs inputs, ResolveFieldContext <object> context)
        {
            var processId = inputs.Get <int>("processId");
            var process   = _processService.GetProcess(processId);

            _processService.Update(process);

            return(new
            {
                member = process.Member
            });
        }
示例#23
0
        public override object MutateAndGetPayload(MutationInputs inputs, ResolveFieldContext <object> context)
        {
            var id       = inputs.Get <int>("id");
            var step     = _stepService.GetStep(id);
            var pipeline = step.OnboardingPipeline;

            _stepService.Remove(step);

            return(new {
                pipeline
            });
        }
示例#24
0
 public override object MutateAndGetPayload(
     MutationInputs inputs,
     ResolveFieldContext <object> context
     )
 {
     return(new {
         Viewer = Database.GetViewer(),
         ChangedTodos = Database.MarkAllTodos(
             inputs.Get <bool>("complete")
             ),
     });
 }
示例#25
0
 public override object MutateAndGetPayload(
     MutationInputs inputs,
     ResolveFieldContext <object> context
     )
 {
     return(new {
         Viewer = Database.GetViewer(),
         DeletedTodoIds = Database
                          .RemoveCompletedTodos(inputs.Get <bool>("complete"))
                          .Select(id => Node.ToGlobalId("Todo", id)),
     });
 }
示例#26
0
        public override object MutateAndGetPayload(MutationInputs inputs, ResolveFieldContext <object> context)
        {
            var body = inputs.Get <string>("body");
            var originalCommentId = inputs.Get <int?>("originalCommentId");
            var audioId           = inputs.Get <int>("audioId");
            var user    = context.UserContext.As <Context>().CurrentUser;
            var comment = new Models.Comment
            {
                UserId            = user.Id,
                Body              = body,
                AudioId           = audioId,
                OriginalCommentId = originalCommentId
            };

            _commentService.Add(comment);

            return(new
            {
                comment
            });
        }
示例#27
0
        public override object MutateAndGetPayload(
            MutationInputs inputs,
            ResolveFieldContext <object> context
            )
        {
            var todo = Database.AddTodo(inputs.Get <string>("text"));

            return(new {
                TodoEdge = new Edge <Todo> {
                    Node = todo,
                    Cursor = ConnectionUtils.CursorForObjectInConnection(Database.GetTodos(), todo)
                },
                Viewer = Database.GetViewer(),
            });
        }
        public override object MutateAndGetPayload(MutationInputs inputs, ResolveFieldContext <object> context)
        {
            var cart = _cartService.LoadOrCreateCart(_cartService.DefaultCartName);

            AddToCartResult result = _cartService.AddToCart(cart, inputs.Get <string>("code"), inputs.Get <decimal>("quantity", 1m));

            if (!result.EntriesAddedToCart)
            {
                context.Errors.AddRange(result.ValidationMessages.Select(m => new ExecutionError(m)));
                return(null);
            }

            _orderRepository.Save(cart);
            _recommendationService.TrackCartAsync(_httpContextBase.Invoke()).Wait();

            LargeCartViewModel largeCartViewModel = _cartViewModelFactory.CreateLargeCartViewModel(cart);

            return(new { Cart = largeCartViewModel });
        }
        public override async Task <object> MutateAndGetPayload(MutationInputs inputs, ResolveFieldContext <object> context)
        {
            var userName = inputs.Get <string>("userName");

            // Get the information about the user from the external login provider
            var info = await _signInManager.GetExternalLoginInfoAsync();

            if (info == null)
            {
                _validationProvider.AddError("_error", "Unsuccessful login with service.");

                return(null);
            }
            var email = info.Principal.FindFirstValue(ClaimTypes.Email);

            var user = new ApplicationUser
            {
                UserName = userName,
                Email    = email
            };

            var result = await _userManager.CreateAsync(user);

            if (result.Succeeded)
            {
                result = await _userManager.AddLoginAsync(user, info);

                if (result.Succeeded)
                {
                    await _signInManager.SignInAsync(user, true);

                    _logger.LogInformation(6, $"User created an account using {info.LoginProvider} provider.");
                }
            }

            foreach (var identityError in result.Errors)
            {
                _validationProvider.AddError("_error", identityError.Description);
            }

            return(null);
        }
示例#30
0
        public override async Task <object> MutateAndGetPayload(MutationInputs inputs, ResolveFieldContext <object> context)
        {
            var email = inputs.Get <string>("email");

            var user = await _userManager.FindByEmailAsync(email);

            if (user == null)
            {
                _validationProvider.AddError("_error", "We couldn't find that email address");

                return(null);
            }

            var code = await _userManager.GeneratePasswordResetTokenAsync(user);

            var passwordResetToken = System.Web.HttpUtility.UrlEncode(code);

            return(new
            {
                user,
                passwordResetToken
            });
        }