示例#1
0
        /// <summary>
        /// Inizializzazione View:
        /// Bind filtri, bind tabelle, etc...
        /// </summary>
        public void InitView()
        {
            if (!CheckSessionAccess())
            {
                return;
            }

            //DateTime DT1 = DateTime.Now;
            //Controllo dei permessi viene fatto QUI DENTRO:
            InitViewFilters();      //Altrimenti devo recuperare 2 volte le categorie...
            //Se non ho categorie o se non ho ticket associati,
            //richiamo il "ShowNoPermission" della View, che fa il REDIRECT sulla lista personale.
            //DateTime DT2 = DateTime.Now;
            BindInfos();
            //DateTime DT3 = DateTime.Now;
            BindTable(null, true);
            //DateTime DT_END = DateTime.Now;

            //TimeSpan TS_FILTERS = DT2 - DT1;
            //TimeSpan TS_Infos = DT3 - DT2;
            //TimeSpan TS_TABLE = DT_END - DT3;

            //Begin Action
            List <KeyValuePair <int, String> > Objects = new List <KeyValuePair <int, string> >();

            Objects.Add(ModuleTicket.KVPgetUser(service.UserGetIdfromPerson(UserContext.CurrentUserID)));

            View.SendUserActions(
                service.ModuleID,
                ModuleTicket.ActionType.TicketListManRes,
                View.ViewCommunityId,
                ModuleTicket.InteractionType.UserWithLearningObject,
                Objects);
            //End Action
        }
        //public void DeleteCategory(Int64 CategoryID)
        //{
        //    service.CategoryDelete(CategoryID);
        //    View.BindList(service.CategoriesGetCommunity(true, true, CurrentCommunityId), Module.ManageCategory);
        //}

        public void RecoverCategory(Int64 CategoryID)
        {
            if (!CheckSessionAccess())
            {
                return;
            }

            if (!(Module.EditCategory || Module.ManageCategory || Module.Administration))
            {
                View.SendUserActions(service.ModuleID, ModuleTicket.ActionType.NoPermission, this.CurrentCommunityId, ModuleTicket.InteractionType.None);

                View.ShowNoPermission();
                return;
            }

            service.CategoryRecover(CategoryID);

            //Begin Action
            List <KeyValuePair <int, String> > Objects = new List <KeyValuePair <int, string> >();

            Objects.Add(ModuleTicket.KVPgetPerson(this.UserContext.CurrentUserID));
            Objects.Add(ModuleTicket.KVPgetCategory(CategoryID));

            View.SendUserActions(service.ModuleID, ModuleTicket.ActionType.CategoryUndelete, this.CurrentCommunityId, ModuleTicket.InteractionType.UserWithLearningObject, Objects);
            //End Action

            View.BindList(service.CategoriesGetCommunity(true, true, CurrentCommunityId), Module.ManageCategory, service.CategoryDefaultGetID());
        }
示例#3
0
        public void Create()
        {
            if (!CheckSessionAccess())
            {
                return;
            }

            if (!(Module.ManageCategory || Module.Administration))
            {
                View.SendAction(ModuleTicket.ActionType.NoPermission, this.CurrentCommunityId, ModuleTicket.InteractionType.None);
                View.ShowNoPermission();
                return;
            }

            Int64 newCatId = service.CategoryCreateSimple(View.Name, View.Description, View.Type);


            if (newCatId > 0)
            {
                IList <Domain.DTO.DTO_CategoryRole> Roles = new List <Domain.DTO.DTO_CategoryRole>();

                Int32 USerId = View.SelectedManagerID;

                //View.Roles;  //new List<Domain.DTO.DTO_CategoryRole>();
                if (USerId <= 0)
                {
                    Domain.DTO.DTO_CategoryRole ManRole = new Domain.DTO.DTO_CategoryRole();
                    ManRole.IsManager = true;
                    ManRole.PersonId  = UserContext.CurrentUserID;
                    Roles.Add(ManRole);
                }
                else
                {
                    Domain.DTO.DTO_CategoryRole ManRole = new Domain.DTO.DTO_CategoryRole();
                    ManRole.IsManager = true;
                    ManRole.PersonId  = USerId;
                    Roles.Add(ManRole);
                }

                Domain.DTO.DTO_AddRolesResponse roleResponse = service.CategoryRolesAdd(newCatId, Roles);

                //Begin Action
                List <KeyValuePair <int, String> > Objects = new List <KeyValuePair <int, string> >();
                Objects.Add(ModuleTicket.KVPgetPerson(this.UserContext.CurrentUserID));
                Objects.Add(ModuleTicket.KVPgetCategory(newCatId));

                View.SendAction(ModuleTicket.ActionType.CategoryCreate, this.CurrentCommunityId, ModuleTicket.InteractionType.UserWithLearningObject, Objects);
                //End Action

                //Gestire eventuali errori nell'aggiunta, tramite roleResponse...

                //View.CurrentCategoryId = newCatId;
                View.NavigateToEdit(newCatId);
                //InitView();
            }
            else
            {
                //Manage Error
            }
        }
示例#4
0
        public void PermissionUserDelete(Int64 permissionId)
        {
            if (!CheckSession())
            {
                return;
            }

            Int64 responsePermissionId = service.SettingPermissionUserDelete(permissionId);

            if (responsePermissionId > 0)
            {
                //Begin Action
                List <KeyValuePair <int, String> > Objects = new List <KeyValuePair <int, string> >();
                //Objects.Add(ModuleTicket.KVPgetPerson(UserContext.CurrentUserID));
                Objects.Add(ModuleTicket.KVPgetPermission(responsePermissionId));

                View.SendUserActions(service.ModuleID, ModuleTicket.ActionType.PermissionRemove, View.ViewCommunityId, ModuleTicket.InteractionType.UserWithUser, Objects);

                //End Action

                this.InitView(GlobalAdminStatus.none);
                //Show OK
            }
            else
            {
                //show error
                this.InitView(GlobalAdminStatus.InternalError);
            }
        }
示例#5
0
        public void InitView()
        {
            if (!CheckSessionAccess())
            {
                return;
            }

            if (!(Module.ManageCategory || Module.Administration))
            {
                View.SendAction(ModuleTicket.ActionType.NoPermission, this.CurrentCommunityId, ModuleTicket.InteractionType.None);

                View.ShowNoPermission();
                return;
            }

            //Begin Action
            List <KeyValuePair <int, String> > Objects = new List <KeyValuePair <int, string> >();

            Objects.Add(ModuleTicket.KVPgetPerson(this.UserContext.CurrentUserID));

            View.SendAction(ModuleTicket.ActionType.CategoryLoadManage, this.CurrentCommunityId, ModuleTicket.InteractionType.UserWithLearningObject, Objects);
            //End Action
            //int comTypeId = (from Community com in Man this.CurrentCommunityId

            this.View.Initialize(service.CategoryTypeGetPermission(this.CurrentCommunityId));

            this.UpdateManager();
        }
示例#6
0
        //TODO: notification - V - test
        public void ChangeStatus(Int64 TicketId, Domain.Enums.TicketStatus Status, Domain.Enums.MessageUserType UserType)
        {
            if (!CheckSessionAccess())
            {
                return;
            }

            Int64   messageId = 0;
            Boolean Changed   = service.TicketStatusModify(TicketId, Status, View.GetChangeStatusMessage(Status), true, UserType, ref messageId);

            //Begin Action
            if (Changed)
            {
                Int64 userId = service.UserGetIdfromPerson(UserContext.CurrentUserID);

                List <KeyValuePair <int, String> > Objects = new List <KeyValuePair <int, string> >();
                Objects.Add(ModuleTicket.KVPgetUser(userId));
                Objects.Add(ModuleTicket.KVPgetTicket(TicketId));

                View.SendUserActions(
                    service.ModuleID,
                    ModuleTicket.ActionType.TicketStatusChanged,
                    View.ViewCommunityId,
                    ModuleTicket.InteractionType.UserWithLearningObject,
                    Objects);
                //End Action

                //TODO: Notification - TEST
                if (messageId > 0)
                {
                    SendNotification(messageId, userId, ModuleTicket.NotificationActionType.StatusChanged);
                }
            }
        }
示例#7
0
        ///// <summary>
        ///// Annulla e va al tree
        ///// </summary>
        //public void ToTree()
        //{
        //    //??
        //}

        ///// <summary>
        ///// Passa al secondo step
        ///// </summary>
        //public void Continue()
        //{
        //    View.ShowStep2();
        //}

        ///// <summary>
        ///// Riassegne le categorie... (TO DO)
        ///// </summary>
        ///// <param name="Reassigment"></param>
        //public void Reassign(IList<Domain.DTO.DTO_CategoryReassign> Reassigment)
        //{
        //    View.Close();
        //}


        public Boolean DeleteCategory(String ReassignMessage, long ReassignId, bool MoveUp)
        {
            Boolean Result = false;

            if (MoveUp)
            {
                Result = service.CategoryDeletePutUp(View.CategoryId);
            }
            else
            {
                Result = service.CategoryDeleteAll(View.CategoryId, ReassignId, ReassignMessage);
            }

            if (Result)
            {
                //Begin Action
                List <KeyValuePair <int, String> > Objects = new List <KeyValuePair <int, string> >();
                Objects.Add(ModuleTicket.KVPgetPerson(this.UserContext.CurrentUserID));
                Objects.Add(ModuleTicket.KVPgetCategory(View.CategoryId));

                View.SendAction(ModuleTicket.ActionType.CategoryUndelete, View.CommunityId, ModuleTicket.InteractionType.UserWithLearningObject, Objects);
                //End Action
            }
            return(Result);
        }
示例#8
0
        //TODO: notification - V - TEST
        public void CategoryReassign(Int64 NewCategoryID)
        {
            if (NewCategoryID <= 0)
            {
                this.InitView();
                this.View.ShowAssignError(CategoryReassignError.noChange);
                return;
            }


            if (!CheckSessionAccess())
            {
                View.ShowNoPermission();
                return; // Domain.Enums.CategoryReassignError.noPermission;
            }


            if (!service.UserHasManResTicketPermission(View.TicketId))
            {
                View.SendUserActions(service.ModuleID, ModuleTicket.ActionType.NoPermission, this.CurrentCommunityId, ModuleTicket.InteractionType.None);
                View.ShowNoPermission();
                return;// Domain.Enums.CategoryReassignError.noPermission;
            }

            Int64 messageId = 0;

            Domain.Enums.CategoryReassignError Response = service.TicketAssignToCategory(View.TicketId, NewCategoryID, View.GetChangeCategoryMessage(), View.UserType, true, ref messageId);

            if (Response == Domain.Enums.CategoryReassignError.none)
            {
                Int64 userId = this.service.UserGetIdfromPerson(UserContext.CurrentUserID);

                //Begin Action
                List <KeyValuePair <int, String> > Objects = new List <KeyValuePair <int, string> >();
                Objects.Add(ModuleTicket.KVPgetPerson(UserContext.CurrentUserID));
                Objects.Add(ModuleTicket.KVPgetTicket(View.TicketId));
                Objects.Add(ModuleTicket.KVPgetCategory(NewCategoryID));

                View.SendUserActions(service.ModuleID, ModuleTicket.ActionType.TicketAssignCategory, this.CurrentCommunityId, ModuleTicket.InteractionType.UserWithLearningObject, Objects);
                //End Action

                //TODO: Notification - test
                if (messageId > 0)
                {
                    SendNotification(messageId, userId, ModuleTicket.NotificationActionType.AssignmentCategory);
                }

                this.InitView();
                this.View.ShowCategoryChanged();
            }
            else
            {
                this.InitView();
                this.View.ShowAssignError(Response);
            }


            //return Response;
        }
示例#9
0
        //TODO: Notification - V - TEST
        public void SetBehalfPerson(Int32 PersonId, bool HideToOwner)
        {
            View.ShowBehalfError(Domain.Enums.BehalfError.none);

            if (!CheckSessionAccess())
            {
                //Session error
                return;
            }

            Domain.TicketUser Usr = service.UserGetfromPerson(UserContext.CurrentUserID);
            if (Usr.Person == null)
            {
                View.ShowBehalfError(Domain.Enums.BehalfError.NoPermission);
                //Error: external?
                return;
            }

            if (!service.SettingPermissionGet(Usr.Id, Usr.Person.TypeID, Domain.Enums.PermissionType.Behalf))
            {
                View.ShowBehalfError(Domain.Enums.BehalfError.NoPermission);
                //Error: no permission
                return;
            }

            Int64 messageId = 0;

            // -- SET BEHALF --
            if (!service.TicketSetBehalfPerson(View.TicketId, PersonId, HideToOwner, ref messageId))
            {
                View.ShowBehalfError(Domain.Enums.BehalfError.dBerror);
                return;
                //Error: dB
            }


            //TODO: Notification - TEST

            if (messageId > 0) //se MINORE <= 0 il Ticket è in DRAFT!
            {
                Int64 userId = service.UserGetIdfromPerson(UserContext.CurrentUserID);
                SendNotification(messageId, userId, ModuleTicket.NotificationActionType.OwnerChanged);
            }


            //Begin Action
            List <KeyValuePair <int, String> > Objects = new List <KeyValuePair <int, string> >();

            Objects.Add(ModuleTicket.KVPgetPerson(PersonId));
            Objects.Add(ModuleTicket.KVPgetTicket(View.TicketId));

            View.SendUserActions(service.ModuleID, ModuleTicket.ActionType.BehalfTicketSet, CurrentCommunityId, ModuleTicket.InteractionType.UserWithLearningObject, Objects);
            //End Action

            this.InitView();
            View.ShowBehalfError(Domain.Enums.BehalfError.success);
            //OK on page
        }
示例#10
0
        //TODO: Notification - V - test
        public void AssignMe()
        {
            if (!CheckSessionAccess())
            {
                return;
            }

            if (!service.UserHasManResTicketPermission(View.TicketId))
            {
                View.SendUserActions(service.ModuleID, ModuleTicket.ActionType.NoPermission, this.CurrentCommunityId, ModuleTicket.InteractionType.None);
                View.ShowNoPermission();
            }

            Int64 messageId = 0;

            bool IsManager = false;

            if (View.UserType == Domain.Enums.MessageUserType.Manager || View.UserType == Domain.Enums.MessageUserType.CategoryManager)
            {
                IsManager = true;
            }

            Boolean Assigned = service.TicketAssignToCurrent(
                View.TicketId, View.UserType,
                View.GetChangeUserMessage(), false,
                IsManager, ref messageId);

            if (Assigned)
            {
                //Begin Action
                List <KeyValuePair <int, String> > Objects = new List <KeyValuePair <int, string> >();
                Objects.Add(ModuleTicket.KVPgetPerson(UserContext.CurrentUserID));
                Objects.Add(ModuleTicket.KVPgetTicket(View.TicketId));

                View.SendUserActions(service.ModuleID, ModuleTicket.ActionType.TicketAssignPerson, this.CurrentCommunityId, ModuleTicket.InteractionType.UserWithLearningObject, Objects);
                //End Action


                //TODO: Notification - test
                if (messageId > 0)
                {
                    Int64 userId = this.service.UserGetIdfromPerson(UserContext.CurrentUserID);
                    SendNotification(messageId, userId, ModuleTicket.NotificationActionType.AssignmentUser);
                }
            }

            this.InitView();

            if (!Assigned)
            {
                View.ShowAssignUsrError(UserReassignError.Current);
            }
            else
            {
                View.ShowAssignUsrError(UserReassignError.none);
            }
        }
示例#11
0
        public void SendTimerAction()
        {
            if (CheckUser())
            {
                List <KeyValuePair <int, String> > Objects = new List <KeyValuePair <int, string> >();
                Objects.Add(ModuleTicket.KVPgetUser(service.UserGetIdfromPerson(UserContext.CurrentUserID)));
                Objects.Add(ModuleTicket.KVPgetTicket(View.TicketId));

                View.SendUserActions(service.ModuleID, ModuleTicket.ActionType.TicketLoadEditUser, -1, ModuleTicket.InteractionType.UserWithLearningObject, Objects);
            }
        }
示例#12
0
        public void SendTimerAction()
        {
            if (service.UserHasManResTicketPermission(View.TicketId))
            {
                List <KeyValuePair <int, String> > Objects = new List <KeyValuePair <int, string> >();
                Objects.Add(ModuleTicket.KVPgetPerson(UserContext.CurrentUserID));
                Objects.Add(ModuleTicket.KVPgetTicket(View.TicketId));

                View.SendUserActions(service.ModuleID, ModuleTicket.ActionType.TicketLoadEditManRes, this.CurrentCommunityId, ModuleTicket.InteractionType.UserWithLearningObject, Objects);
            }
        }
示例#13
0
        //TODO: Notification - V - TEST
        public void RemoveBehalf()
        {
            View.ShowBehalfError(BehalfError.none);

            if (!CheckSessionAccess())
            {
                return;
            }

            Domain.TicketUser Usr = service.UserGetfromPerson(UserContext.CurrentUserID);
            if (Usr.Person == null)
            {
                View.ShowBehalfError(BehalfError.NoPermission);
                return;
            }

            //if (!service.SettingPermissionGet(Usr.Id, Usr.Person.TypeID, PermissionType.Behalf))
            //{
            //    View.ShowBehalfError(BehalfError.NoPermission);
            //    return;
            //}

            Int64 messageId = 0;

            if (!service.TicketSetBehalfCurrent(View.CurrentTicketId, ref messageId))
            {
                View.ShowBehalfError(BehalfError.dBerror);
            }

            //TODO: Notification - TEST
            if (messageId > 0) //se MINORE <= 0 il Ticket è in DRAFT!
            {
                Int64 userId = service.UserGetIdfromPerson(UserContext.CurrentUserID);
                SendNotification(messageId, userId, ModuleTicket.NotificationActionType.OwnerChanged);
            }



            //Begin Action
            List <KeyValuePair <int, String> > Objects = new List <KeyValuePair <int, string> >();

            //Objects.Add(ModuleTicket.KVPgetUser(service.UserGetIdfromPerson(UserContext.CurrentUserID)));
            Objects.Add(ModuleTicket.KVPgetTicket(View.CurrentTicketId));

            View.SendUserActions(service.ModuleID, ModuleTicket.ActionType.BehalfTicketRemove, View.ViewCommunityId, ModuleTicket.InteractionType.UserWithLearningObject, Objects);
            //End Action

            this.InitView();
            View.ShowBehalfError(BehalfError.deleteSuccess);
            //OK on page
        }
示例#14
0
        //TODO: Notification - V - TEST
        public void ReopenTicket()
        {
            if (!CheckSessionAccess())
            {
                return;
            }

            //String ReopenText = "ToDo : Get reopen text from View!";
            //ReopenText = "";
            //View.ShowReopenError();

            Domain.Enums.TicketMessageSendError SendError = Domain.Enums.TicketMessageSendError.none;
            //Boolean ChangeError = false;

            //if(String.IsNullOrEmpty(ReopenText))
            //    ChangeError = service.TicketChangeStatus(View.TicketId, Domain.Enums.TicketStatus.open);
            //else
            //SendError = service.MessageSendUser(
            //    View.TicketId,
            //    ,
            //    "",
            //    true,
            //    Domain.Enums.TicketStatus.open);
            Int64   NewMessageId = 0;
            Boolean Changed      = service.TicketStatusModify(View.TicketId, Domain.Enums.TicketStatus.open, View.GetChangeStatusMessage(Domain.Enums.TicketStatus.open), true, Domain.Enums.MessageUserType.Partecipant, ref NewMessageId);

            //if (SendError != Domain.Enums.TicketMessageSendError.none)
            //    View.ShowSendError(SendError);
            //else
            Int64 userId = service.UserGetIdfromPerson(UserContext.CurrentUserID);

            if (!Changed)
            {
                this.View.ShowChangeStatusError(true);
                //Begin Action
                List <KeyValuePair <int, String> > Objects = new List <KeyValuePair <int, string> >();
                Objects.Add(ModuleTicket.KVPgetUser(userId));
                Objects.Add(ModuleTicket.KVPgetTicket(View.TicketId));

                View.SendUserActions(service.ModuleID, ModuleTicket.ActionType.TicketStatusChanged, CurrentCommunityId, ModuleTicket.InteractionType.UserWithLearningObject, Objects);
                //End Action

                SendNotification(NewMessageId, userId, ModuleTicket.NotificationActionType.StatusChanged);
            }
            else
            {
                this.InitView();
            }
            //init view!!!!!! SE TUTTOP OK!!!!
        }
示例#15
0
        public Boolean DeleteCategory(String ReassignMessage, IDictionary <long, long> Reassignments)
        {
            Boolean Result = service.CategoryDeleteAll(View.CategoryId, Reassignments, ReassignMessage);

            //Begin Action
            if (Result)
            {
                List <KeyValuePair <int, String> > Objects = new List <KeyValuePair <int, string> >();
                Objects.Add(ModuleTicket.KVPgetPerson(this.UserContext.CurrentUserID));
                Objects.Add(ModuleTicket.KVPgetCategory(View.CategoryId));

                View.SendAction(ModuleTicket.ActionType.CategoryUndelete, View.CommunityId, ModuleTicket.InteractionType.UserWithLearningObject, Objects);
            }
            //End Action

            return(Result);
        }
示例#16
0
        public void Save(IList <Domain.liteCategoryReorderItem> Items, Boolean Refresh)
        {
            if (!CheckSessionAccess())
            {
                return;
            }

            if (!(Module.ManageCategory || Module.Administration))
            {
                View.SendUserActions(service.ModuleID, ModuleTicket.ActionType.NoPermission, this.CurrentCommunityId, ModuleTicket.InteractionType.None);

                //View.ShowNoPermission();
                View.ShowMessage(Domain.Enums.CategoryTreeMessageType.NoPermission);
                return;
            }

            Domain.Enums.CategoryReorderResponse Saved = service.CategoryReorder(Items);

            //Begin Action
            List <KeyValuePair <int, String> > Objects = new List <KeyValuePair <int, string> >();

            Objects.Add(ModuleTicket.KVPgetPerson(this.UserContext.CurrentUserID));

            View.SendUserActions(service.ModuleID, ModuleTicket.ActionType.CategoryReorder, this.CurrentCommunityId, ModuleTicket.InteractionType.UserWithLearningObject, Objects);
            //End Action

            if (Refresh)
            {
                this.InitView();
            }

            switch (Saved)
            {
            case Domain.Enums.CategoryReorderResponse.Error:
                View.ShowMessage(Domain.Enums.CategoryTreeMessageType.UnSaved);
                break;

            case Domain.Enums.CategoryReorderResponse.NoDefaultReorder:
                View.ShowMessage(Domain.Enums.CategoryTreeMessageType.DefaultReorderWarning);
                break;

            case Domain.Enums.CategoryReorderResponse.Success:
                View.ShowMessage(Domain.Enums.CategoryTreeMessageType.Saved);
                break;
            }
        }
示例#17
0
        public void SendTimerAction()
        {
            if (CheckSessionAccess())
            {
                List <KeyValuePair <int, String> > Objects = new List <KeyValuePair <int, string> >();
                Objects.Add(ModuleTicket.KVPgetUser(service.UserGetIdfromPerson(UserContext.CurrentUserID)));

                if (View.CurrentTicketId > 0)
                {
                    Objects.Add(ModuleTicket.KVPgetTicket(View.CurrentTicketId));
                    View.SendUserActions(service.ModuleID, ModuleTicket.ActionType.ExternalCreate, -1, ModuleTicket.InteractionType.None, Objects);
                }
                else
                {
                    View.SendUserActions(service.ModuleID, ModuleTicket.ActionType.ExternalCreate, -1, ModuleTicket.InteractionType.None, Objects);
                }
            }
        }
示例#18
0
        //TODO: notification - V - TEST
        public void TicketChangeCondition(Domain.Enums.TicketCondition Condition, bool status)
        {
            if (!CheckSessionAccess())
            {
                return;
            }

            if (!service.UserHasManResTicketPermission(View.TicketId))
            {
                View.SendUserActions(service.ModuleID, ModuleTicket.ActionType.NoPermission, this.CurrentCommunityId, ModuleTicket.InteractionType.None);
                View.ShowNoPermission();
            }

            Int64 messageId = 0;

            Boolean Changed = service.TicketConditionModify(
                View.TicketId, Condition, status,
                View.GetChangeConditionMessage(Condition), true,
                View.UserType, ref messageId);

            if (Changed)
            {
                //Begin Action
                List <KeyValuePair <int, String> > Objects = new List <KeyValuePair <int, string> >();
                Objects.Add(ModuleTicket.KVPgetUser(this.service.UserGetIdfromPerson(UserContext.CurrentUserID)));
                Objects.Add(ModuleTicket.KVPgetTicket(View.TicketId));

                View.SendUserActions(service.ModuleID, ModuleTicket.ActionType.TicketStatusChanged, this.CurrentCommunityId, ModuleTicket.InteractionType.UserWithLearningObject, Objects);
                //End Action

                //TODO: Notification - test
                if (messageId > 0)
                {
                    Int64 userId = this.service.UserGetIdfromPerson(UserContext.CurrentUserID);
                    SendNotification(messageId, userId, ModuleTicket.NotificationActionType.ModerationChanged);
                }

                this.InitView();
            }
            else
            {
                //Mange Errors
            }
        }
示例#19
0
        /// <summary>
        /// Inizializzazione View.
        /// NOTA: i valori dei filtri vanno allineati "a mano" tra view ed inizializzazione dell'oggetto "DTO_ListFilterUser": IN REVISIONE!
        /// </summary>
        public void InitView(Domain.Enums.TicketDraftDeleteError DeleteError = Domain.Enums.TicketDraftDeleteError.hide)
        {
            if (!CheckSessionAccess())
            {
                return;
            }

            if (View.ViewCommunityId != UserContext.CurrentCommunityID)
            {
                View.ViewCommunityId = UserContext.CurrentCommunityID;
            }


            View.ShowDeletMessage(DeleteError);


            Domain.DTO.DTO_ListInit FiltersInit = new Domain.DTO.DTO_ListInit();

            ////DDL Lingue
            //Filters.r_availableLanguages = service.LanguagesGetAvailableSys();

            //Categorie disponibili - TO DO -
            FiltersInit.Categories = service.CategoriesGetTreeDLL(-1, CategoryTREEgetType.FilterUser);

            View.InitFilters(FiltersInit);

            //UpdateInfo();


            //Begin Action
            List <KeyValuePair <int, String> > Objects = new List <KeyValuePair <int, string> >();

            Objects.Add(ModuleTicket.KVPgetUser(service.UserGetIdfromPerson(UserContext.CurrentUserID)));

            View.SendUserActions(service.ModuleID, ModuleTicket.ActionType.TicketListUser, View.ViewCommunityId, ModuleTicket.InteractionType.UserWithLearningObject, Objects);
            //End Action

            //BindList(new Domain.DTO.DTO_ListFilterUser());
        }
示例#20
0
        public void ChangeMsgVisibility(Int64 MessageId, Boolean IsVisible)
        {
            if (!CheckSessionAccess())
            {
                return;
            }

            if (!service.UserHasManResTicketPermission(View.TicketId))
            {
                View.SendUserActions(service.ModuleID, ModuleTicket.ActionType.NoPermission, this.CurrentCommunityId, ModuleTicket.InteractionType.None);
                View.ShowNoPermission();
            }

            Boolean Changed = service.MessageChangeVisibility(View.TicketId, MessageId, IsVisible, View.UserType);

            if (Changed)
            {
                //Begin Action
                List <KeyValuePair <int, String> > Objects = new List <KeyValuePair <int, string> >();
                Objects.Add(ModuleTicket.KVPgetUser(this.service.UserGetIdfromPerson(UserContext.CurrentUserID)));
                Objects.Add(ModuleTicket.KVPgetMessage(MessageId));

                if (IsVisible)
                {
                    View.SendUserActions(service.ModuleID, ModuleTicket.ActionType.MessageShow, this.CurrentCommunityId, ModuleTicket.InteractionType.UserWithLearningObject, Objects);

                    //TODO: Notification    (If IsLastMessage...)
                }
                else
                {
                    View.SendUserActions(service.ModuleID, ModuleTicket.ActionType.MessageHide, this.CurrentCommunityId, ModuleTicket.InteractionType.UserWithLearningObject, Objects);
                }
                //End Action

                InitView();
            }
        }
示例#21
0
        public void InitView()
        {
            if (!CheckUser())
            {
                return;
            }

            //if (View.ViewCommunityId != UserContext.CurrentCommunityID)
            View.ViewCommunityId = -1;

            Domain.DTO.DTO_UserModify Data = service.TicketGetUserExt(View.TicketId, View.CurrentUser);


            if (Data.Errors == Domain.Enums.TicketEditUserErrors.none)
            {
                View.InitView(Data);

                //Begin Action
                List <KeyValuePair <int, String> > Objects = new List <KeyValuePair <int, string> >();
                Objects.Add(ModuleTicket.KVPgetUser(service.UserGetIdfromPerson(UserContext.CurrentUserID)));
                Objects.Add(ModuleTicket.KVPgetTicket(View.TicketId));

                View.SendUserActions(service.ModuleID, ModuleTicket.ActionType.TicketLoadEditUser, -1, ModuleTicket.InteractionType.UserWithLearningObject, Objects);
                //End Action
                View.TicketId = Data.TicketId;

                View.DraftMsgId = (Data.DraftMessage != null) ? Data.DraftMessage.Id : -1;
            }
            else if (Data.Errors == Domain.Enums.TicketEditUserErrors.IsDraft)
            {
                View.ShowDraft(Data.TicketId);
            }
            else if (Data.Errors == Domain.Enums.TicketEditUserErrors.NoPermission)
            {
                View.SendUserActions(service.ModuleID, ModuleTicket.ActionType.NoPermission, this.AppContext.UserContext.CurrentCommunityID, ModuleTicket.InteractionType.None);
            }
        }
示例#22
0
        public void Save(Boolean UpdateView, Boolean SaveUsers = true)
        {
            if (!CheckSessionAccess())
            {
                return;
            }

            if (!(Module.ManageCategory || Module.Administration))
            {
                View.SendUserActions(service.ModuleID, ModuleTicket.ActionType.NoPermission, this.CurrentCommunityId, ModuleTicket.InteractionType.None);

                View.ShowNoPermission();
                return;
            }

            //Se la view non è valida, non faccio nulla (la view si arrangia a mostrare gli errori (Nome vuoto)
            if (!View.Validate())
            {
                return;
            }

            lm.Comol.Core.DomainModel.Languages.LanguageItem Lang = View.PreviousLanguage;

            Domain.Category Cat = View.Category;

            Domain.Enums.CategoryAddModifyError Error = service.CategoryModify(Cat.Id, Cat.Name, Cat.Description, Cat.Type, Lang);



            Domain.Enums.CategoryAssignersError ResError = Domain.Enums.CategoryAssignersError.none;

            if (SaveUsers)
            {
                ResError = service.CategoryUserUpdate(Cat.Id, View.UsersSettings);
            }


            if (Error == Domain.Enums.CategoryAddModifyError.none)
            {
                //Begin Action
                List <KeyValuePair <int, String> > Objects = new List <KeyValuePair <int, string> >();
                Objects.Add(ModuleTicket.KVPgetPerson(this.UserContext.CurrentUserID));
                Objects.Add(ModuleTicket.KVPgetCategory(Cat.Id));

                View.SendUserActions(service.ModuleID, ModuleTicket.ActionType.CategoryModify, this.CurrentCommunityId, ModuleTicket.InteractionType.UserWithLearningObject, Objects);
                //End Action
            }


            if (ResError != Domain.Enums.CategoryAssignersError.none)
            {
                Domain.DTO.DTO_CategoryCheckResponse resp = service.CategoryUsersCheck(Cat.Id);

                if (!resp.PreviousAssigned)
                {
                    if (UpdateView)
                    {
                        this.InitView();
                        //this.UpdateView(null);
                    }

                    View.ShowForcedReassigned(resp);
                    return;
                }
            }

            if (Error == Domain.Enums.CategoryAddModifyError.none)
            {
                if (UpdateView)
                {
                    this.UpdateView(null);
                }

                View.ShowReassignError(ResError);
                return;
            }
            else
            {
                //Other error
            }
        }
示例#23
0
        public bool SaveTicket(Domain.DTO.DTO_Ticket TkData, Boolean ForUpload = false)
        {
            if (!CheckUser())
            {
                View.SendUserActions(service.ModuleID, ModuleTicket.ActionType.NoPermission, -1, ModuleTicket.InteractionType.None);

                View.ShowCantCreate(false, false);
                return(false);
            }

            Domain.Enums.TicketCreateError  Error = Domain.Enums.TicketCreateError.none;
            Domain.Enums.TicketAddCondition Cond  = service.PermissionTicketUsercanCreateExternal();

            if (Cond == Domain.Enums.TicketAddCondition.CheckCount)
            {
                if (TkData.IsDraft)
                {
                    if (!(service.TicketGetNumDraft(TkData.CreatorId) <= Access.MaxDraft))
                    {
                        Error = Domain.Enums.TicketCreateError.ToMuchDraft;
                    }
                }
                else
                {
                    if (!(service.TicketGetNumOpen(TkData.CreatorId) <= Access.MaxSended))
                    {
                        Error = Domain.Enums.TicketCreateError.ToMuchTicket;
                    }
                }
            }
            else if (Cond != Domain.Enums.TicketAddCondition.CanCreate)
            {
                Error = Domain.Enums.TicketCreateError.NoPermission;
            }

            if (Error != Domain.Enums.TicketCreateError.none)
            {
                View.SendUserActions(service.ModuleID, ModuleTicket.ActionType.NoPermission, this.CurrentCommunityId, ModuleTicket.InteractionType.None);

                View.ShowError(Error);
                return(false);
            }

            //Boolean CanCreate = false;
            //if (Cond == Domain.Enums.TicketAddCondition.CanCreate)
            //    CanCreate = true;
            //else if (Cond == Domain.Enums.TicketAddCondition.CheckCount)
            //{
            //    if (TkData.IsDraft)
            //    {
            //        if (service.TicketGetNumDraft(TkData.UserId) <= Access.MaxDraft)
            //            CanCreate = true;

            //    }
            //    else
            //    {
            //        if (service.TicketGetNumOpen(TkData.UserId) <= Access.MaxSended)
            //            CanCreate = true;
            //    }
            //}

            //if (!CanCreate)
            //{

            //    View.SendUserActions(service.ModuleID, ModuleTicket.ActionType.NoPermission, -1, ModuleTicket.InteractionType.None);

            //    //View.SendAction(ModuleTicket.ActionType.NoPermission, this.CurrentCommunityId);
            //    //View.SendAction(ModuleTicket.ActionType.NoPermission);
            //    View.ShowCantCreate(false);
            //    return;
            //}


            Error = service.TicketCreateExternal(View.CurrentUser, ref TkData);

            if (Error == Domain.Enums.TicketCreateError.none ||
                TkData.IsDraft && Error != Domain.Enums.TicketCreateError.NoCategory)
            {
                //Begin Action
                List <KeyValuePair <int, String> > Objects = new List <KeyValuePair <int, string> >();
                Objects.Add(ModuleTicket.KVPgetUser(TkData.CreatorId));
                Objects.Add(ModuleTicket.KVPgetTicket(TkData.TicketId));

                if (TkData.IsDraft)
                {
                    View.SendUserActions(service.ModuleID, ModuleTicket.ActionType.TicketCreateDraft, -1, ModuleTicket.InteractionType.UserWithLearningObject, Objects);
                }
                else
                {
                    View.SendUserActions(service.ModuleID, ModuleTicket.ActionType.TicketCreate, -1, ModuleTicket.InteractionType.UserWithLearningObject, Objects);
                }
                //End Action



                service.NotificationSetTicketCreatorExternal(TkData.TicketId, TkData.MailSettings, View.CurrentUser.UserId);


                if (!TkData.IsDraft)
                {
                    SendNotification(TkData.DraftMsgId, TkData.CreatorId, ModuleTicket.NotificationActionType.TicketSend);
                }



                View.TicketCreated(TkData.TicketId, TkData.IsDraft);
            }
            else
            {
                View.ShowError(Error);
                return(false);
            }

            return(true);
        }
示例#24
0
        //TODO: notification - V - test
        public Boolean SaveTicket(Domain.DTO.DTO_Ticket TkData,
                                  Domain.Enums.MailSettings ownerSettings,
                                  Domain.Enums.MailSettings creatorSettings,
                                  Boolean ForUpload = false)
        {
            if (!CheckSessionAccess())
            {
                View.SendUserActions(service.ModuleID, ModuleTicket.ActionType.NoPermission, -1, ModuleTicket.InteractionType.None);

                View.ShowError(Domain.Enums.TicketCreateError.NoPermission);
                return(false);
            }

            Domain.Enums.TicketCreateError  Error = Domain.Enums.TicketCreateError.none;
            Domain.Enums.TicketAddCondition Cond  = service.PermissionTicketUsercanCreate();

            if (Cond == Domain.Enums.TicketAddCondition.CheckCount)
            {
                if (TkData.IsDraft)
                {
                    if (!(service.TicketGetNumDraft(TkData.CreatorId) <= Access.MaxDraft))
                    {
                        Error = Domain.Enums.TicketCreateError.ToMuchDraft;
                    }
                }
                else
                {
                    if (!(service.TicketGetNumOpen(TkData.CreatorId) <= Access.MaxSended))
                    {
                        Error = Domain.Enums.TicketCreateError.ToMuchTicket;
                    }
                }
            }
            else if (Cond != Domain.Enums.TicketAddCondition.CanCreate)
            {
                Error = Domain.Enums.TicketCreateError.NoPermission;
            }

            if (Error != Domain.Enums.TicketCreateError.none)
            {
                View.SendUserActions(service.ModuleID, ModuleTicket.ActionType.NoPermission, this.CurrentCommunityId, ModuleTicket.InteractionType.None);

                View.ShowError(Error);
                return(false);
            }

            Error = service.TicketCreate(ref TkData);

            Boolean CanSave = false;

            if (Error == Domain.Enums.TicketCreateError.none)
            {
                CanSave = true;
            }
            else if (Error == Domain.Enums.TicketCreateError.NoCategory ||
                     Error == Domain.Enums.TicketCreateError.NoText ||
                     Error == Domain.Enums.TicketCreateError.NoTitle)
            {
                CanSave = ForUpload || TkData.IsDraft;
            }

            if (CanSave)
            {
                //Begin Action
                List <KeyValuePair <int, String> > Objects = new List <KeyValuePair <int, string> >();
                Objects.Add(ModuleTicket.KVPgetUser(TkData.CreatorId));
                Objects.Add(ModuleTicket.KVPgetTicket(TkData.TicketId));

                if (TkData.IsDraft)
                {
                    View.SendUserActions(service.ModuleID, ModuleTicket.ActionType.TicketCreateDraft, this.CurrentCommunityId, ModuleTicket.InteractionType.UserWithLearningObject, Objects);
                }
                else
                {
                    View.SendUserActions(service.ModuleID, ModuleTicket.ActionType.TicketCreate, this.CurrentCommunityId, ModuleTicket.InteractionType.UserWithLearningObject, Objects);
                }
                //End Action


                //NOTIFICATION

                //Se DISABLED, SOLO per il creator corrente (no behalf)
                if (ownerSettings != MailSettings.DISABLED)
                {
                    bool IsOwner = creatorSettings == MailSettings.DISABLED;
                    service.NotificationSetTicketOwner(TkData.TicketId, ownerSettings, IsOwner);
                }

                if (creatorSettings != MailSettings.DISABLED)
                {
                    service.NotificationSetTicketCreatorCurrent(TkData.TicketId, creatorSettings);
                }

                //TODO: notification - test
                if (!TkData.IsDraft)
                {
                    SendNotification(TkData.DraftMsgId, TkData.CreatorId, ModuleTicket.NotificationActionType.TicketSend);
                    //SE inviato il DraftMsgdiventa il Primo messaggio.
                    //Il Creator è sempre quello che "fa fede" sulle logiche di invio.
                }

                View.TicketCreated(TkData.TicketId, TkData.IsDraft);


                if (!ForUpload)
                {
                    this.InitView();
                }
            }
            else
            {
                View.ShowError(Error);
                return(false);
            }

            return(true);
        }
示例#25
0
        public void InitView()
        {
            if (!CheckSessionAccess())
            {
                return;
            }

            int ColUserId = this.UserContext.CurrentUserID;

            Domain.DTO.DTO_ManagerModify Data = service.TicketGetManager(View.TicketId, View.MassageFilter, View.MessagesOrder);

            if (Data.Errors == TicketEditManErrors.NoPermission)// (!service.UserHasManResTicketPermission(View.TicketId))
            {
                View.SendUserActions(service.ModuleID, ModuleTicket.ActionType.NoPermission, this.CurrentCommunityId, ModuleTicket.InteractionType.None);
                View.ShowNoPermission();
            }

            //Int32 CommunityId = UserContext.CurrentCommunityID;

            IList <Domain.DTO.DTO_CategoryTree> Categories = service.CategoriesGetTreeDLL(CurrentCommunityId, CategoryTREEgetType.FilterManager);


            //service.CategoryGetDDLManRes_ComCurrent();
            View.UserType = Data.CurrentUserType;

            //this.CurrentCommunityId
            //

            lm.Comol.Core.FileRepository.Domain.ModuleRepository cRepository = service.GetRepositoryPermissions(CurrentCommunityId, ColUserId);

            //List<iCoreItemFileLink<long>> alreadyLinkedFiles = new List<iCoreItemFileLink<long>>();
            ////= new List<iCoreItemFileLink<long>>();

            ////Link di comunità già usati

            //if (Data.DraftMessage != null && Data.DraftMessage.Attachments.Any())
            //{
            //    alreadyLinkedFiles = (from Domain.TicketFile fl in Data.DraftMessage.Attachments
            //                          where fl.File != null && fl.Link != null
            //                          select new dtoCoreItemFileLink<long>()
            //                          {
            //                              CreatedBy = fl.CreatedBy,
            //                              CreatedOn = fl.CreatedOn,
            //                              Deleted = fl.Deleted,
            //                              ItemFileLinkId = fl.Id,
            //                              StatusId = 0,
            //                              Link = fl.Link,
            //                              ModifiedBy = fl.ModifiedBy,
            //                              ModifiedOn = fl.ModifiedOn,
            //                              Owner = fl.CreatedBy,
            //                              isVisible = (fl.Deleted == BaseStatusDeleted.None && !fl.File.isDeleted),
            //                              File = fl.File
            //                          }).ToList<iCoreItemFileLink<long>>();

            //    //fl.Link.DestinationItem.ObjectLongID


            //    // && fl.Visibility == Domain.Enums.FileVisibility.visible
            //    //NO: se non è visibile, non lo è per l'utente, manager e resolver lo possono vedere E comunque non posso linkarlo nuovamente.
            //}

            //if (alreadyLinkedFiles == null)
            //    alreadyLinkedFiles = new List<iCoreItemFileLink<long>>();

            bool hasComManager = service.UsersCommunityHasManRes(CurrentCommunityId, Data.UserAssignedId);
            bool hasCommunity  = (CurrentCommunityId > 0);


            View.InitView(
                Data,
                Categories,
                service.CategoryGetDTOCatTree(Data.CategoryCurrentId),
                service.UploadAvailableActionsGet(
                    Data.CurrentUserType,
                    CurrentCommunityId,
                    ColUserId,
                    cRepository),
                cRepository,
                CurrentCommunityId,
                (Data.DraftMessage == null ? 0 : Data.DraftMessage.Id),
                hasComManager,
                hasCommunity);

            if (Data.Errors == Domain.Enums.TicketEditManErrors.none)
            {
                View.DraftMsgId = Data.DraftMessage.Id;
                View.TicketId   = Data.TicketId;
            }

            //Begin Action
            List <KeyValuePair <int, String> > Objects = new List <KeyValuePair <int, string> >();

            Objects.Add(ModuleTicket.KVPgetPerson(UserContext.CurrentUserID));
            Objects.Add(ModuleTicket.KVPgetTicket(View.TicketId));

            View.SendUserActions(service.ModuleID, ModuleTicket.ActionType.TicketLoadEditManRes, this.CurrentCommunityId, ModuleTicket.InteractionType.UserWithLearningObject, Objects);
            //End Action
        }
示例#26
0
        public void InitView()
        {
            if (!CheckSessionAccess())
            {
                return;
            }
            //Boolean IsNewAndOtherTicket = false;


            Domain.DTO.DTO_AddInit values = new Domain.DTO.DTO_AddInit();

            //Utente
            Domain.TicketUser Usr = service.UserGetfromPerson(UserContext.CurrentUserID);
            if (Usr == null)
            {
                View.DisplaySessionTimeout(View.ViewCommunityId);
                return;
            }

            Domain.Enums.TicketAddCondition Cond = service.PermissionTicketUsercanCreate();

            if (Cond == Domain.Enums.TicketAddCondition.CheckCount &&
                service.TicketGetNumOpen(Usr.Id) >= Access.MaxSended)
            {
                View.ShowCantCreate(Domain.Enums.CantCreate.MaxSend);
            }

            int DraftNum = service.TicketGetNumDraft(Usr.Id);

            //DDL Lingue
            values.availableLanguages = service.LanguagesGetAvailableSys();

            int CommunityId = CurrentCommunityId;

            //Ticket (Se draft, altrimenti nuovo!)
            Domain.DTO.DTO_Ticket Tk = new Domain.DTO.DTO_Ticket();

            if (View.CurrentTicketId <= 0)
            {
                //Controllo se può creare nuovi Ticket (Bozze)
                if (!(Cond == Domain.Enums.TicketAddCondition.CanCreate ||
                      (Cond == Domain.Enums.TicketAddCondition.CheckCount &&
                       (DraftNum < Access.MaxDraft))))
                {
                    if (View.CurrentTicketId <= 0)
                    {
                        View.ShowCantCreate(Domain.Enums.CantCreate.MaxDraftNoSend);
                        View.SendUserActions(service.ModuleID, ModuleTicket.ActionType.NoPermission, CommunityId, ModuleTicket.InteractionType.None);
                        return;
                    }
                }

                //Creo un nuovo Ticket in BOZZA
                Tk           = service.TicketCreateNewDraft(Usr.Id, CommunityId, View.GetDraftTitle(), View.GetDraftPreview());
                values.IsNew = true;

                //Una volta creato, redirezione alla pagina con il ticket appena creato, per evitare problema F5.
                View.GotoNewTicketCreated(Tk.Code);
                return;
            }
            else
            {
                //Prendo il Ticket in Bozza
                Tk = service.TicketGetDraft(View.CurrentTicketId);
            }

            //SE Ticket == null o cercano di accedere ad un Ticket non valido
            //o non è possibile creare un nuovo Ticket.
            if (Tk == null || Tk.TicketId <= 0 || !Tk.IsDraft)
            {
                View.ShowCantCreate(Domain.Enums.CantCreate.permission);
                return;
            }

            //Carico Ticket (Nuovo, appena creato o precedente che sia)
            CommunityId = Tk.CommunityId;

            View.CurrentTicketId = Tk.TicketId;
            View.ViewCommunityId = CommunityId;
            View.DraftMsgId      = Tk.DraftMsgId;

            values.TicketData         = Tk;
            values.CurrentCommunityId = CommunityId;
            values.FileCommunityId    = CurrentCommunityId;

            //Action
            List <KeyValuePair <int, String> > Objects = new List <KeyValuePair <int, string> >();

            Objects.Add(ModuleTicket.KVPgetUser(service.UserGetIdfromPerson(UserContext.CurrentUserID)));

            View.SendUserActions(service.ModuleID, ModuleTicket.ActionType.ExternalCreate, -1, ModuleTicket.InteractionType.None, Objects);
            //End Action

            values.HasOtherDraft = (values.IsNew && DraftNum > 0);

            this.UpdateCommunity(CommunityId, Tk.CategoryId);


            //USER!
            values.CurrentUser.UserId = Usr.Id;

            if (Usr.Person != null)
            {
                values.CurrentUser.PersonId     = Usr.Person.Id;
                values.CurrentUser.Name         = Usr.Person.Name;
                values.CurrentUser.SName        = Usr.Person.Surname;
                values.CurrentUser.LanguageCode = Usr.LanguageCode;
                values.CurrentUser.Mail         = Usr.Person.Mail;
            }
            else
            {
                values.CurrentUser.PersonId     = 0;
                values.CurrentUser.Name         = Usr.Name;
                values.CurrentUser.SName        = Usr.Sname;
                values.CurrentUser.LanguageCode = Usr.LanguageCode; // TicketService.LangMultiCODE; //OR SYS DEFAULT!?
                values.CurrentUser.Mail         = Usr.mail;
            }


            //Behalf

            if (Usr.Person != null)
            {
                values.CanBehalf = service.SettingPermissionGet(Usr.Id, Usr.Person.TypeID,
                                                                Domain.Enums.PermissionType.Behalf);
            }
            else
            {
                values.CanBehalf = false;
            }


            // Notification (sono state messe qui a differenza di "Edit" in cui sono messe nel service.
            // SPOSTARE IN SERVICE?

            if (Tk.IsBehalf)
            {
                if (Tk.HideToOwner)
                {
                    bool isdefaultCreator = false;
                    values.CreatorMailSettings = service.MailSettingsGet(Usr.Id, Tk.TicketId, false, ref isdefaultCreator);
                    values.IsDefaultNotCreator = isdefaultCreator;
                    values.OwnerMailSettings   = MailSettings.none;
                    values.IsDefaultNotOwner   = true;
                }
                else
                {
                    bool isdefaultOwner   = false;
                    bool isdefaultCreator = false;
                    values.CreatorMailSettings = service.MailSettingsGet(Usr.Id, Tk.TicketId, false, ref isdefaultCreator);
                    values.IsDefaultNotCreator = isdefaultCreator;
                    values.OwnerMailSettings   = service.MailSettingsGet(Tk.OwnerId, Tk.TicketId, false, ref isdefaultOwner);
                    values.IsDefaultNotOwner   = isdefaultOwner;
                }

                values.IsCreatorNotificationEnable = Usr.IsNotificationActiveUser;
                values.IsOwnerNotificationEnable   = Tk.IsOwnerNotificationActive;
            }
            else
            {
                values.OwnerMailSettings = MailSettings.none;
                bool isdefaultCreator = false;
                values.CreatorMailSettings = service.MailSettingsGet(Usr.Id, Tk.TicketId, false, ref isdefaultCreator);
                values.IsDefaultNotCreator = isdefaultCreator;
                values.IsDefaultNotOwner   = true;

                values.IsCreatorNotificationEnable = Usr.IsNotificationActiveUser;
                //values.IsOwnerNotificationEnable = Usr.IsNotificationActiveUser;
            }

            values.CanListUsers = CanListUsers(UserContext.CurrentCommunityID);


            //Upload File comunità
            //Repository 4 upload

            int CurPersId = (Usr.Person != null) ? Usr.Person.Id : 0;

            lm.Comol.Core.FileRepository.Domain.ModuleRepository cRepository = service.GetRepositoryPermissions(values.FileCommunityId, CurPersId);
            List <RepositoryAttachmentUploadActions>             actions     = service.UploadAvailableActionsGet(MessageUserType.Partecipant, values.FileCommunityId, Usr.Person.Id, cRepository);

            //if (values.TicketData.Attachments != null && values.TicketData.Attachments.Any())
            //{
            //    alreadyLinkedFiles = (from Domain.DTO.DTO_AttachmentItem atc in values.TicketData.Attachments
            //                          where atc.File != null && atc.Link != null
            //                          select new dtoCoreItemFileLink<long>()
            //                          {
            //                              CreatedBy = atc.CreatedBy,
            //                              CreatedOn = atc.CreatedOn,
            //                              Deleted = atc.Deleted,
            //                              ItemFileLinkId = atc.IdAttachment,//fl.Id,
            //                              StatusId = 0,
            //                              Link = atc.Link,
            //                              Owner = atc.CreatedBy,
            //                              isVisible = (atc.Deleted == BaseStatusDeleted.None && !atc.File.isDeleted),
            //                              File = atc.File
            //                          }).ToList<iCoreItemFileLink<long>>();

            //    //ModifiedBy = atc.ModifiedBy,
            //    //ModifiedOn = atc.ModifiedOn,

            //    // && fl.Visibility == Domain.Enums.FileVisibility.visible
            //    //NO: se non è visibile, non lo è per l'utente, manager e resolver lo possono vedere E comunque non posso linkarlo nuovamente.
            //}
            RepositoryAttachmentUploadActions dAction = RepositoryAttachmentUploadActions.none;

            View.InitView(values, actions, dAction, cRepository, Tk.DraftMsgId);
            initCommunitySelector(Tk.CommunityId);
        }
示例#27
0
        //TODO: notification - V - test
        public void SendMessage(
            String Text, String Preview, Boolean HideToUser,
            Domain.Enums.TicketStatus NewStatus,
            Domain.Enums.MessageType MsgType,
            Int64 DraftId)
        {
            if (!CheckSessionAccess())
            {
                return;
            }

            if (!service.UserHasManResTicketPermission(View.TicketId))
            {
                View.SendUserActions(service.ModuleID, ModuleTicket.ActionType.NoPermission, this.CurrentCommunityId, ModuleTicket.InteractionType.None);
                View.ShowNoPermission();
            }
            if (DraftId <= 0)
            {
                this.InitView();
                return;
            }

            if (this.service.MessageCheckDraft(DraftId))
            {
                this.InitView();
                return;
            }



            Domain.Enums.TicketMessageSendError error = Domain.Enums.TicketMessageSendError.none;



            Int64 messageId = 0;
            Int64 userId    = this.service.UserGetIdfromPerson(UserContext.CurrentUserID);

            if (NewStatus == Domain.Enums.TicketStatus.closeSolved || NewStatus == Domain.Enums.TicketStatus.closeUnsolved)
            {
                error = service.MessageSendMan(View.TicketId, Text, Preview, HideToUser, MsgType, View.UserType, false, ref messageId);
                service.TicketStatusModify(View.TicketId, NewStatus, View.GetChangeStatusMessage(NewStatus), true, View.UserType, ref messageId);

                //Begin Action
                List <KeyValuePair <int, String> > Objects = new List <KeyValuePair <int, string> >();
                Objects.Add(ModuleTicket.KVPgetUser(userId));
                Objects.Add(ModuleTicket.KVPgetTicket(View.TicketId));

                View.SendUserActions(service.ModuleID, ModuleTicket.ActionType.TicketStatusChanged, this.CurrentCommunityId, ModuleTicket.InteractionType.UserWithLearningObject, Objects);
                //End Action
            }
            else
            {
                service.TicketStatusModify(View.TicketId, NewStatus, View.GetChangeStatusMessage(NewStatus), false, View.UserType, ref messageId);
                error = service.MessageSendMan(View.TicketId, Text, Preview, HideToUser, MsgType, View.UserType, true, ref messageId);
            }

            if (error == Domain.Enums.TicketMessageSendError.none)
            {
                //Int64 userId = this.service.UserGetIdfromPerson(UserContext.CurrentUserID);
                //Begin Action
                List <KeyValuePair <int, String> > Objects = new List <KeyValuePair <int, string> >();
                Objects.Add(ModuleTicket.KVPgetUser(userId));
                Objects.Add(ModuleTicket.KVPgetMessage(messageId));

                View.SendUserActions(service.ModuleID, ModuleTicket.ActionType.MessageSend, this.CurrentCommunityId, ModuleTicket.InteractionType.UserWithLearningObject, Objects);
                //End Action

                //ToDo: Send Notification
                if (messageId > 0)
                {
                    SendNotification(messageId, userId, ModuleTicket.NotificationActionType.MassageSend);
                }

                this.InitView();
            }
            //else
            View.ShowSendError(error);
        }
示例#28
0
        /// <summary>
        /// Al primo caricamento della pagina!
        /// </summary>
        public void InitView()
        {
            if (!CheckSessionAccess())
            {
                return;
            }

            if (!(Module.ManageCategory || Module.Administration))
            {
                View.SendUserActions(service.ModuleID,
                                     ModuleTicket.ActionType.NoPermission, this.CurrentCommunityId, ModuleTicket.InteractionType.None);

                View.ShowNoPermission();
                return;
            }

            Domain.Category Category = new Domain.Category();

            //View.CommunityCategories = service.CategoriesGetCommunity(true);

            if (View.CurrentCategoryId > 0)
            {
                //Categoria
                Domain.Category Cat = service.CategoryGetDetached(View.CurrentCategoryId, Domain.Enums.RolesLoad.all, false);
                if (Cat == null || Cat.Id <= 0 || Cat.IdCommunity != CurrentCommunityId)
                {
                    View.ShowWrongCategory();
                    return;
                }

                Domain.DTO.DTO_CategoryTypeComPermission Permission = service.CategoryTypeGetPermission(this.CurrentCommunityId);


                View.InitCategories(Permission, Cat.Type, Cat.IsDefault);
                View.Category = Cat;

                //Traduzioni
                List <lm.Comol.Core.DomainModel.Languages.LanguageItem> langs = new List <lm.Comol.Core.DomainModel.Languages.LanguageItem>();
                //List<Domain.DTO.DTO_CategoryTranslation> translations = new List<Domain.DTO.DTO_CategoryTranslation>();
                langs = (from t in Cat.Translations
                         where t.Deleted == BaseStatusDeleted.None
                         select new lm.Comol.Core.DomainModel.Languages.LanguageItem
                {
                    IsMultiLanguage = (t.LanguageId == TicketService.LangMultiID) ? true : false,
                    Id = t.LanguageId,
                    Code = (t.LanguageId == TicketService.LangMultiID) ? t.LanguageCode.ToUpper() : t.LanguageCode,
                    Name = (t.LanguageId == TicketService.LangMultiID) ? t.LanguageName.ToUpper() : t.LanguageName,
                    Status = DomainModel.Languages.ItemStatus.valid
                }).Distinct().ToList();
                //.OrderBy(li => li.IsMultiLanguage).ThenBy(li => li.Code).ToList();

                //.OrderBy(li => li.Code).ToList();
                //langs = langs.OrderBy(li => li.IsMultiLanguage).ToList();
                //.OrderBy(li => li.IsMultiLanguage).ThenBy(li => li.Code).Distinct().ToList();


                ////TEST!!!
                //String TEST = "";
                //foreach (lm.Comol.Core.DomainModel.Languages.LanguageItem _lng in langs)
                //{
                //    TEST += _lng.Code + " - " + _lng.Name + " - " + _lng.IsMultiLanguage + "/r/n";
                //}

                //langs = langs.OrderBy(li => li.IsMultiLanguage).ThenBy(li => li.Code).ToList();

                //TEST += "/r/n -------  /r/n";

                //foreach(lm.Comol.Core.DomainModel.Languages.LanguageItem _lng in langs)
                //{
                //    TEST += _lng.Code + " - " + _lng.Name + " - " + _lng.IsMultiLanguage + "/r/n";
                //}


                ////END TEST!!!



                lm.Comol.Core.DomainModel.Languages.LanguageItem current =
                    (from lm.Comol.Core.DomainModel.Languages.LanguageItem lng in langs
                     where lng.Id == TicketService.LangMultiID
                     select lng).FirstOrDefault();

                View.BindLanguages(service.LanguagesGetAvailableSys().Distinct().ToList(), langs, current);
                View.PreviousLanguage = current;


                //UTENTI
                IList <Domain.DTO.DTO_UserRole> roles = (from Domain.LK_UserCategory lkcat in Cat.UserRoles select new Domain.DTO.DTO_UserRole()
                {
                    User = lkcat.User, IsManager = lkcat.IsManager
                }).ToList();

                int Managercount = (from Domain.DTO.DTO_UserRole rl in roles where rl.IsManager == true select rl.IsManager).Count();

                if (Managercount <= 1)
                {
                    View.ShowDeleteManagers = false;
                }
                else
                {
                    View.ShowDeleteManagers = true;
                }

                //Begin Action
                List <KeyValuePair <int, String> > Objects = new List <KeyValuePair <int, string> >();
                Objects.Add(ModuleTicket.KVPgetPerson(this.UserContext.CurrentUserID));
                Objects.Add(ModuleTicket.KVPgetCategory(Cat.Id));

                View.SendUserActions(service.ModuleID, ModuleTicket.ActionType.CategoryLoadManage, this.CurrentCommunityId, ModuleTicket.InteractionType.UserWithLearningObject, Objects);
                //End Action


                View.AssociatedUsers = roles;

                View.ShowForcedReassigned(null);
            }
            else
            {
                View.RedirectToList();
                //Vai alla creazione!
                //View.Category = new Domain.Category();
            }


            //Category;
        }
示例#29
0
        //TODO: Notification - V - TEST
        public void SendMessage(
            string Text, string Preview,
            Boolean CloseMessage, Boolean IsSolved)
        {
            if (!CheckSessionAccess())
            {
                return;
            }

            Domain.Enums.TicketStatus status = (IsSolved)? Domain.Enums.TicketStatus.closeSolved : Domain.Enums.TicketStatus.closeUnsolved;

            if (service.MessageCheckDraft(View.DraftMsgId))
            {
                this.InitView();
                return;
            }

            Int64 NewMessageId = View.DraftMsgId;

            Domain.Enums.TicketMessageSendError Errors =
                service.MessageSendUser(View.TicketId, Text, Preview, ref NewMessageId);
            //, CloseMessage, status);

            Boolean Changed = true;

            if (CloseMessage)
            {
                if (IsSolved)
                {
                    Changed = service.TicketStatusModify(View.TicketId,
                                                         Domain.Enums.TicketStatus.closeSolved,
                                                         View.GetChangeStatusMessage(Domain.Enums.TicketStatus.closeSolved),
                                                         false,
                                                         Domain.Enums.MessageUserType.Partecipant,
                                                         ref NewMessageId);
                }
                else
                {
                    Changed = service.TicketStatusModify(View.TicketId,
                                                         Domain.Enums.TicketStatus.closeUnsolved,
                                                         View.GetChangeStatusMessage(Domain.Enums.TicketStatus.closeUnsolved),
                                                         false,
                                                         Domain.Enums.MessageUserType.Partecipant,
                                                         ref NewMessageId);
                }
            }

            Int64 userId = service.UserGetIdfromPerson(UserContext.CurrentUserID);

            if (Errors != Domain.Enums.TicketMessageSendError.none && Errors != TicketMessageSendError.TicketClosed)
            {
                //Begin Action

                if (Changed)
                {
                    List <KeyValuePair <int, String> > Objects = new List <KeyValuePair <int, string> >();
                    Objects.Add(ModuleTicket.KVPgetUser(userId));
                    Objects.Add(ModuleTicket.KVPgetTicket(View.TicketId));

                    View.SendUserActions(service.ModuleID, ModuleTicket.ActionType.TicketStatusChanged, CurrentCommunityId, ModuleTicket.InteractionType.UserWithLearningObject, Objects);
                }

                List <KeyValuePair <int, String> > ObjectsMsg = new List <KeyValuePair <int, string> >();
                ObjectsMsg.Add(ModuleTicket.KVPgetUser(userId));
                ObjectsMsg.Add(ModuleTicket.KVPgetMessage(NewMessageId));

                View.SendUserActions(service.ModuleID, ModuleTicket.ActionType.MessageSend, CurrentCommunityId, ModuleTicket.InteractionType.UserWithLearningObject, ObjectsMsg);
                //End Action


                View.ShowSendError(Errors);
            }
            else if (!Changed)
            {
                View.ShowChangeStatusError(false);
            }
            else
            {
                if (Errors == TicketMessageSendError.none)
                {
                    SendNotification(NewMessageId, userId, ModuleTicket.NotificationActionType.MassageSend);
                }
                this.InitView();
                View.ShowSendError(Errors);
            }
        }
示例#30
0
        public void InitView()
        {
            //Nascondo messaggi. Saranno eventualmente visualizzati in seguito all'InitView o internamente.
            View.ShowSendError(TicketMessageSendError.none);
            if (!CheckSessionAccess())
            {
                return;
            }

            //int ComId = UserContext.CurrentCommunityID;
            int PersonId = UserContext.CurrentUserID;


            if (View.ViewCommunityId != CurrentCommunityId)
            {
                View.ViewCommunityId = CurrentCommunityId;
            }

            Domain.DTO.DTO_UserModify Data = service.TicketGetUser(View.TicketId);


            //Repository 4 upload

            lm.Comol.Core.FileRepository.Domain.ModuleRepository cRepository = service.GetRepositoryPermissions(CurrentCommunityId, PersonId);

            List <RepositoryAttachmentUploadActions> actions = service.UploadAvailableActionsGet(
                Data.CurrentUserType,
                CurrentCommunityId,
                PersonId,
                cRepository);


            //List<iCoreItemFileLink<long>> alreadyLinkedFiles = new List<iCoreItemFileLink<long>>();

            //if (Data.DraftMessage != null && Data.DraftMessage.Attachments.Any())
            //{
            //    alreadyLinkedFiles = (from Domain.TicketFile fl in Data.DraftMessage.Attachments
            //                          where fl.File != null && fl.Link != null
            //                          select new dtoCoreItemFileLink<long>()
            //                          {
            //                              CreatedBy = fl.CreatedBy,
            //                              CreatedOn = fl.CreatedOn,
            //                              Deleted = fl.Deleted,
            //                              ItemFileLinkId = fl.Id,
            //                              StatusId = 0,
            //                              Link = fl.Link,
            //                              ModifiedBy = fl.ModifiedBy,
            //                              ModifiedOn = fl.ModifiedOn,
            //                              Owner = fl.CreatedBy,
            //                              isVisible = (fl.Deleted == BaseStatusDeleted.None && !fl.File.isDeleted),
            //                              File = fl.File
            //                          }).ToList<iCoreItemFileLink<long>>();
            //    // && fl.Visibility == Domain.Enums.FileVisibility.visible
            //    //NO: se non è visibile, non lo è per l'utente, manager e resolver lo possono vedere E comunque non posso linkarlo nuovamente.
            //}
            ////if (alreadyLinkedFiles == null)
            ////    alreadyLinkedFiles = new List<iCoreItemFileLink<long>>();

            RepositoryAttachmentUploadActions dAction = RepositoryAttachmentUploadActions.none;

            View.InitView(Data, actions, dAction, cRepository, CurrentCommunityId, (Data.DraftMessage == null ? 0 : Data.DraftMessage.Id));


            if (Data.Errors == Domain.Enums.TicketEditUserErrors.none)
            {
                //Begin Action
                List <KeyValuePair <int, String> > Objects = new List <KeyValuePair <int, string> >();
                Objects.Add(ModuleTicket.KVPgetUser(service.UserGetIdfromPerson(UserContext.CurrentUserID)));
                Objects.Add(ModuleTicket.KVPgetTicket(View.TicketId));

                View.SendUserActions(service.ModuleID, ModuleTicket.ActionType.TicketLoadEditUser, CurrentCommunityId,
                                     ModuleTicket.InteractionType.UserWithLearningObject, Objects);
                //End Action
                View.TicketId = Data.TicketId;

                View.DraftMsgId = (Data.DraftMessage != null) ? Data.DraftMessage.Id : -1;

                if (Data.BehalfRevoked)
                {
                    View.ShowBehalfError(BehalfError.permissionRevoked);
                }
                else
                {
                    View.ShowBehalfError(BehalfError.none);
                }
            }
            else
            {
                if (Data.Errors == Domain.Enums.TicketEditUserErrors.NoPermission)
                {
                    View.SendUserActions(service.ModuleID, ModuleTicket.ActionType.NoPermission, CurrentCommunityId, ModuleTicket.InteractionType.None);
                }
                View.ShowBehalfError(BehalfError.NoPermission);
            }

            //View.ShowInitError(Data.Errors);
        }