Exemplo n.º 1
0
        private async Task <int> CrateParent(PerentCreateViewModel input, ApplicationUser user)
        {
            var parentId = await this.parentServices.CreateAsync(input.FirstName, input.LastName, input.Email, user.Id);

            await this.parentServices.SetStudentToParent(parentId, input.StudentId);

            return(parentId);
        }
Exemplo n.º 2
0
        public IActionResult Create(int id)
        {
            var viewModel = new PerentCreateViewModel
            {
                StudentId = id,
            };

            var hasParent = this.parentServices.HasParent(viewModel.Email);

            if (hasParent)
            {
                return(this.RedirectToAction("Edit", new { id = viewModel.Id }));
            }

            return(this.View(viewModel));
        }
Exemplo n.º 3
0
        public async Task <IActionResult> CreateAsync(PerentCreateViewModel input)
        {
            var hasParent = this.parentServices.HasParent(input.Email);

            var hasStudent = this.parentServices.ParentHasStudent(input.Email, input.StudentId);

            var parentUser = await this.userManager.FindByEmailAsync(input.Email);

            if (!this.ModelState.IsValid)
            {
                return(this.View(input));
            }
            else if (parentUser == null && !hasParent)
            {
                var user = new ApplicationUser
                {
                    UserName       = input.Email,
                    Email          = input.Email,
                    EmailConfirmed = true,
                };

                var password = "******";

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

                if (result.Succeeded)
                {
                    int parentId = await this.CrateParent(input, user);

                    await this.userManager.AddToRoleAsync(user, GlobalConstants.ParentRoleName);

                    return(this.RedirectToAction("Details", new { id = parentId }));
                }
            }
            else if (parentUser != null && !hasParent)
            {
                var isInRole = this.userManager.IsInRoleAsync(parentUser, GlobalConstants.ParentRoleName);

                if (await isInRole)
                {
                    int parentId = await this.CrateParent(input, parentUser);

                    return(this.RedirectToAction("Details", new { id = parentId }));
                }
                else
                {
                    int parentId = await this.CrateParent(input, parentUser);

                    await this.userManager.AddToRoleAsync(parentUser, GlobalConstants.ParentRoleName);

                    return(this.RedirectToAction("Details", new { id = parentId }));
                }
            }
            else if (parentUser != null && hasParent && !hasStudent)
            {
                var parentId = this.parentServices.GetParentId(input.Email);
                await this.parentServices.SetStudentToParent(parentId, input.StudentId);

                return(this.RedirectToAction("Details", new { id = parentId }));
            }

            return(this.View("ParentHasStudent"));
        }