Ejemplo n.º 1
0
        public async Task <IActionResult> Confirminvate(int?id, string token, int?familyId)
        {
            if (id == null || token == null || familyId == null)
            {
                return(NotFound());
            }
            PersonToken personToken = db.PersonTokens.FirstOrDefault(x => x.Code == token);

            if (personToken.Date.AddDays(1) < DateTime.Now)
            {
                return(NotFound());
            }
            if (personToken == null)
            {
                return(NotFound());
            }

            User user = await userManager.FindByIdAsync(personToken.UserId);

            if (user == null)
            {
                return(NotFound());
            }
            ConfirmInvateVM vm = new ConfirmInvateVM
            {
                Id       = (int)id,
                Token    = token,
                FamilyId = (int)familyId
            };

            return(View(vm));
        }
Ejemplo n.º 2
0
        public async Task <IActionResult> Confirminvate(ConfirmInvateVM vm)
        {
            if (!ModelState.IsValid)
            {
                return(View(vm));
            }
            PersonToken personToken = db.PersonTokens.FirstOrDefault(x => x.Code == vm.Token);

            if (personToken == null)
            {
                return(NotFound());
            }
            if (personToken.Date.AddDays(1) < DateTime.Now)
            {
                return(NotFound());
            }
            User user = await userManager.FindByIdAsync(personToken.UserId);

            if (user == null)
            {
                return(NotFound());
            }

            User invateUser = await userManager.FindByEmailAsync(personToken.Email);

            if (invateUser != null)
            {
                return(NotFound());
            }
            Person person = db.People.Include(x => x.UserToPerson).FirstOrDefault(x => x.Id == vm.Id && x.FamilyId == vm.FamilyId);

            if (person == null)
            {
                return(NotFound());
            }
            if (person.UserToPerson != null)
            {
                return(NotFound());
            }
            int familId = FamlyMethods.GetFamilyId(db, user);

            if (familId != vm.FamilyId)
            {
                return(NotFound());
            }

            User newUser = new User
            {
                Firstname      = person.Firstname,
                Lastname       = person.LastName,
                Email          = personToken.Email,
                BirthDate      = person.Birthdate,
                UserName       = person.Firstname.Trim() + person.LastName.Trim() + Guid.NewGuid().ToString(),
                EmailConfirmed = true,
                Avatar         = person.Photo
            };

            switch (person.GenderId)
            {
            case 1:
                newUser.GenderId = 1;
                newUser.Avatar   = "default1.jpg";
                break;

            case 2:
                newUser.GenderId = 2;
                newUser.Avatar   = "default2.jpg";
                break;
            }
            IdentityResult identityResult = await userManager.CreateAsync(newUser, vm.Password);

            if (!identityResult.Succeeded)
            {
                foreach (var er in identityResult.Errors)
                {
                    ModelState.AddModelError("", er.Description);
                }

                return(View(vm));
            }
            await userManager.AddToRoleAsync(newUser, Utilities.SD.MemberRole);

            await userManager.UpdateAsync(newUser);

            await signInManager.SignInAsync(newUser, true);

            FamilyToUser familyToUser = new FamilyToUser {
                FamilyId = vm.FamilyId, UserId = newUser.Id
            };
            await db.FamilyToUsers.AddAsync(familyToUser);

            db.SaveChanges();
            UserToPerson userToPerson = new UserToPerson {
                PersonId = person.Id, UserId = newUser.Id
            };

            db.UserToPeople.Add(userToPerson);
            db.PersonTokens.Remove(personToken);
            db.SaveChanges();
            return(RedirectToAction("Index", "Home"));
        }