Esempio n. 1
0
        public async Task <ActionResult <User_Entity> > PostManager([FromBody] InviteViewModel input)
        {
            var  user    = _userEntityRepository.GetByUserId(input.InviterId, input.EntityId);
            var  Newuser = _userEntityRepository.GetByUserId(input.NewMemberId, input.EntityId);
            User New     = await _userRepository.Get(input.NewMemberId);

            Entity ent = await _entityRepository.Get(input.EntityId);

            var     userEntity = new User_Entity(New, ent, Role.Manager);
            Boolean admin      = false;

            if (user.Role == Role.Manager)
            {
                admin = true;
            }
            var        childEntity = _childRepository.GetByParentId(input.EntityId);
            List <int> childs      = new List <int>();

            foreach (ChildEntity ee in childEntity)
            {
                int childId = ee.ChildId;
                childs.Add(childId);
            }
            if (Newuser is null)    // sig que the new user is not a (member , manager or observer ) in this entity
            {
                System.Diagnostics.Debug.WriteLine("the new user is not a (member , manager or observer ) in this entity  ");
                if (admin)
                {
                    if (input.NewRole == 0)       // we want to invite the new user as a manager to the entity
                    {
                        foreach (int i in childs) // we make the journey on all the  chids of the entity to make the newuser as a manager also at thoses entities
                        {
                            Entity ii = await _entityRepository.Get(i);

                            var childuserEnt   = new User_Entity(New, ii, Role.Manager); //make the new user as a manager to the child af the entity
                            var childwallPerm  = new WallPermission(input.NewMemberId, i, true, true, true, true, true, true, true);
                            var childokrPerm   = new OKRPermission(input.NewMemberId, i, true, true, true, true, true, true, true, true, true, true);
                            var childorgPerm   = new OrganizationPermission(input.NewMemberId, i, true, true, true);
                            var childnotifPerm = new NotificationPermission(input.NewMemberId, i, true);
                            await _wallRepository.Add(childwallPerm);

                            await _okrRepository.Add(childokrPerm);

                            await _organizationRepository.Add(childorgPerm);

                            await _notificationRepository.Add(childnotifPerm);

                            await _userEntityRepository.Add(childuserEnt);
                        }
                        var wallPerm  = new WallPermission(input.NewMemberId, input.EntityId, true, true, true, true, true, true, true);
                        var okrPerm   = new OKRPermission(input.NewMemberId, input.EntityId, true, true, true, true, true, true, true, true, true, true);
                        var orgPerm   = new OrganizationPermission(input.NewMemberId, input.EntityId, true, true, true);
                        var notifPerm = new NotificationPermission(input.NewMemberId, input.EntityId, true);
                        await _wallRepository.Add(wallPerm);

                        await _okrRepository.Add(okrPerm);

                        await _organizationRepository.Add(orgPerm);

                        await _notificationRepository.Add(notifPerm);

                        await _userEntityRepository.Add(userEntity);

                        Console.WriteLine("Creating Manager:" + New.UserId);
                    }
                }
            }
            else
            {
                System.Diagnostics.Debug.WriteLine("the new user is  a (member , manager or observer ) in this entity  ");
                Newuser.Role = 0;
                System.Diagnostics.Debug.WriteLine(Newuser.Role);
                //await _userEntityRepository.Update(Newuser);
                User_Entity NewChange = await _userEntityRepository.Update(Newuser);

                var wallPerm1  = _wallRepository.GetByUserEntityId(input.NewMemberId, input.EntityId);
                var okrPer1    = _okrRepository.GetByUserEntityId(input.NewMemberId, input.EntityId);
                var orgPerm1   = _organizationRepository.GetOrgPermission(input.NewMemberId, input.EntityId);
                var notifPerm1 = _notificationRepository.GetByUserEntityId(input.NewMemberId, input.EntityId);
                System.Diagnostics.Debug.WriteLine(wallPerm1.Add);
                wallPerm1.Add              = true; wallPerm1.AddEmployees = true; wallPerm1.Delete = true; wallPerm1.DeleteEmployees = true;  wallPerm1.DisplayFivePointQuestionUser = true;  wallPerm1.Observe = true; wallPerm1.Update = true;
                okrPer1.Add                = true; okrPer1.AddEmployees = true; okrPer1.Delete = true; okrPer1.DeleteEmployees = true; okrPer1.Observe = true; okrPer1.Update = true; okrPer1.ObserveKResult = true; okrPer1.updateKResult = true; okrPer1.DeleteKResult = true; okrPer1.AddKResult = true;
                orgPerm1.AddEntities       = true; orgPerm1.ChangeOrganizationProfile = true; orgPerm1.ChangeSettings = true;
                notifPerm1.GetNotification = true;
                await _wallRepository.Update(wallPerm1);

                await _okrRepository.Update(okrPer1);

                await _organizationRepository.Update(orgPerm1);

                await _notificationRepository.Update(notifPerm1);

                foreach (int i in childs)   // we make the journey on all the  chids of the entity to make the newuser as a manager also at thoses entities
                {
                    Entity ii = await _entityRepository.Get(i);

                    var entityuserchild = _userEntityRepository.GetByUserId(input.NewMemberId, i);
                    entityuserchild.Role = input.NewRole;
                    await _userEntityRepository.Update(entityuserchild);

                    var wallPerm  = _wallRepository.GetByUserEntityId(Newuser.Id, i);
                    var okrPer    = _okrRepository.GetByUserEntityId(Newuser.Id, i);
                    var orgPerm   = _organizationRepository.GetOrgPermission(Newuser.Id, i);
                    var notifPerm = _notificationRepository.GetByUserEntityId(Newuser.Id, i);
                    wallPerm.Add              = true; wallPerm.AddEmployees = true; wallPerm.Delete = true; wallPerm.DeleteEmployees = true; wallPerm.DisplayFivePointQuestionUser = true; wallPerm.Observe = true; wallPerm.Update = true;
                    okrPer.Add                = true; okrPer.AddEmployees = true; okrPer.Delete = true; okrPer.DeleteEmployees = true; okrPer.Observe = true; okrPer.Update = true; okrPer.ObserveKResult = true; okrPer.updateKResult = true; okrPer.DeleteKResult = true; okrPer.AddKResult = true;
                    orgPerm.AddEntities       = true; orgPerm.ChangeOrganizationProfile = true; orgPerm.ChangeSettings = true;
                    notifPerm.GetNotification = true;
                    await _wallRepository.Update(wallPerm);

                    await _okrRepository.Update(okrPer);

                    await _organizationRepository.Update(orgPerm);

                    await _notificationRepository.Update(notifPerm);

                    await context.SaveChangesAsync();
                }
                Console.WriteLine("Creating Manager:" + New.UserId);
                return(CreatedAtAction("Get", NewChange));
            }
            return(CreatedAtAction("Get", userEntity));
        }