//public Notification Add(RegisterViewModel entity)
        //{
        //    var notificiation = new Notification();


        //    var person = new Person
        //    {
        //        Id = new ReferenceGenerator().GenerateId(),
        //        FirstName = entity.FirstName,
        //        MidleName = entity.MidleName,
        //        LastName = entity.LastName,
        //        ContactAddress = entity.ContactAddress,
        //        Gender = entity.Gender
        //    };



        //    try
        //    {
        //        _ctx.Persons.Add(person);
        //        _ctx.SaveChanges();
        //        notificiation.Id = person.Id;
        //        notificiation.Message = "registration was successful";
        //        notificiation.Success = true;
        //    }
        //    catch (Exception ex)
        //    {
        //        string es = ex.Message;
        //        notificiation.Message = "registration was not successful";
        //        notificiation.Success = false;
        //    }

        //    return notificiation;
        //}

        public Notification Add(RegisterAndAssignUserToNetWork entity)
        {
            var notificiation = new Notification();


            var person = new Person
            {
                Id             = new ReferenceGenerator().GenerateId(),
                FirstName      = entity.FirstName,
                MidleName      = entity.MidleName,
                LastName       = entity.LastName,
                ContactAddress = entity.ContactAddress,
                Gender         = entity.Gender
            };



            try
            {
                _ctx.Persons.Add(person);
                _ctx.SaveChanges();
                notificiation.Id      = person.Id;
                notificiation.Message = "registration was successful";
                notificiation.Success = true;
            }
            catch (Exception ex)
            {
                string es = ex.Message;
                notificiation.Message = "registration was not successful";
                notificiation.Success = false;
            }

            return(notificiation);
        }
        public ActionResult AssignToNetwork(RegisterAndAssignUserToNetWork userViewModel)
        {
            if (ModelState.IsValid)
            {
                var member       = new MemberLogic().Find(s => s.Id.Equals(User.Identity.GetUserId()));
                var notification = (new PermissionAndAuthorization()).Add(userViewModel);
                if (!notification.Success || string.IsNullOrEmpty(notification.Id))
                {
                    //AddErrors(notification);
                }
                else
                {
                    var applicationUser = new ApplicationUser
                    {
                        UserName    = userViewModel.Email.ToLower(),
                        Email       = userViewModel.Email.ToLower(),
                        PersonId    = notification.Id,
                        PhoneNumber = userViewModel.Phone
                    };

                    var identityResult = UserManager.Create(applicationUser, userViewModel.Password);
                    if (identityResult.Succeeded)
                    {
                        if (userViewModel.Function != null)
                        {
                            var profileuserfunction = GroupManager.SetUserGroups(applicationUser.Id, userViewModel.Function);
                            if (profileuserfunction.Succeeded)
                            {
                                var getPersonId          = UserManager.FindByEmail(userViewModel.Email);
                                var addUseToThierNetwork = new AssignUsersToTheirAgentNetwork
                                {
                                    UserId    = getPersonId.Id,
                                    NetworkId = member.AgencyId
                                };
                                var results = new MemberLogic().AssignMemberToNetwork(addUseToThierNetwork);
                                if (results.Success)
                                {
                                    var userPositionHeldInOrganogramm = new UserPositionHeldInOrganogramm
                                    {
                                        UserId     = addUseToThierNetwork.UserId,
                                        OrggrammId = member.AgencyId
                                    };

                                    var resultss = new MemberLogic().AddWorkArea(userPositionHeldInOrganogramm);
                                    if (resultss.Success)
                                    {
                                        return(RedirectToAction("Index"));
                                    }
                                }
                            }
                        }
                    }
                }

                // this.AddErrors(identityResult);
            }
            return(View());
        }
        public ActionResult AssignToNetwork()
        {
            var member = new MemberLogic().Find(s => s.Id.Equals(User.Identity.GetUserId()));

            var addAgentModel = new RegisterAndAssignUserToNetWork();

            addAgentModel.AvailableSex.Add(new SelectListItem()
            {
                Text  = "Select Sex",
                Value = ""
            });
            var sex = new GenderProcess().GetSex().OrderBy(s => s.Name);

            foreach (var item in sex)
            {
                addAgentModel.AvailableSex.Add(new SelectListItem()
                {
                    Text  = item.Name,
                    Value = item.Id
                });
            }

            addAgentModel.AvailableFunction.Add(new SelectListItem()
            {
                Text  = "Select Function",
                Value = ""
            });

            var function = new GroupLogic().Get(s => s.Owner.Equals(member.Agency));

            foreach (var item in function)
            {
                addAgentModel.AvailableFunction.Add(new SelectListItem()
                {
                    Text  = item.Name,
                    Value = item.Id
                });
            }

            return(View(addAgentModel));
        }
 /// <summary>
 /// register user for the application by populating the RegisterAndAssignUserToNetWork entity
 /// </summary>
 /// <param name="entity">RegisterAndAssignUserToNetWork</param>
 /// <returns>notification object {messagge = "carry the message to communicate to the user", Success = true or false}</returns>
 public Notification Add(RegisterAndAssignUserToNetWork entity)
 {
     return(_permissionAndAuth.Add(entity));
 }