public void InitView()
        {
            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;
            }

            //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.CategoryList, this.CurrentCommunityId, ModuleTicket.InteractionType.UserWithLearningObject, Objects);
            //End Action

            SetCommunityName();
            View.BindList(service.CategoriesGetCommunity(true, true, CurrentCommunityId), Module.ManageCategory, service.CategoryDefaultGetID());
        }
        public void InitView()
        {
            if (!CheckUser())
            {
                View.SendUserActions(service.ModuleID, ModuleTicket.ActionType.NoPermission, -1, ModuleTicket.InteractionType.None);

                View.ShowCantCreate(false, false);

                return;
            }

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

            if (Categories.Count <= 0)
            {
                View.SendUserActions(service.ModuleID, ModuleTicket.ActionType.NoPermission, -1, ModuleTicket.InteractionType.None);

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


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

            if (Cond == Domain.Enums.TicketAddCondition.NoPermission)
            {
                View.SendUserActions(service.ModuleID, ModuleTicket.ActionType.NoPermission, -1, ModuleTicket.InteractionType.None);

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

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

            values.CurrentUser = View.CurrentUser;

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

            int CommunityId = CurrentCommunityId; // View.ViewCommunityId;//this.UserContext.CurrentCommunityID;

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

            if (View.CurrentTicketId > 0)
            {
                //Carico Ticket precedente
                Tk = service.TicketGetDraft(View.CurrentTicketId, View.CurrentUser.UserId);

                if (Tk != null && Tk.TicketId > 0)
                {
                    values.TicketData = Tk;
                    CommunityId       = Tk.CommunityId;
                }
            }
            else
            {
                if (Cond == Domain.Enums.TicketAddCondition.CheckCount &&
                    (service.TicketGetNumDraft(values.CurrentUser.UserId) > Access.MaxDraft))
                {
                    View.SendUserActions(service.ModuleID, ModuleTicket.ActionType.NoPermission, -1, ModuleTicket.InteractionType.None);

                    View.ShowCantCreate(false, true);
                    return;
                }
                else if (Cond == Domain.Enums.TicketAddCondition.NoPermission || Cond == Domain.Enums.TicketAddCondition.NoUser)
                {
                    View.SendUserActions(service.ModuleID, ModuleTicket.ActionType.NoPermission, -1, ModuleTicket.InteractionType.None);

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

                //Creo un nuovo Ticket in BOZZA
                Tk = service.TicketCreateNewDraft(View.CurrentUser.UserId, CommunityId, View.GetDraftTitle(), View.GetDraftPreview());

                values.IsNew = true;
            }

            //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)
            {
                View.ShowCantCreate(false, false);
                return;
            }

            View.ViewCommunityId = CommunityId;

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

            //Categorie disponibili - TO DO -
            //values.Categories = service.CategoriesGetTreeDLLSystem(CommunityId);
            values.CurrentCommunityId = CommunityId;
            //String ComName = service.GetAltCommunityName(this.UserContext.CurrentCommunityID);
            //if(ComName == TicketService.ComErrName)
            //    ComName =

            if (values.TicketData != null && values.TicketData.CategoryId > 0)
            {
                //Domain.DTO.DTO_CategoryTree SelectedCate = service.CategoryGetDTOCatTree(values.TicketData.CategoryId);
                View.refreshCategory(Categories, values.TicketData.CategoryId);
            }
            else
            {
                View.refreshCategory(Categories, service.CategoryDefaultGetID());
            }

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


            //Impostazioni notifica
            //notification

            bool isNotifDef = false;

            values.CreatorMailSettings = Domain.Enums.MailSettings.none;

            values.OwnerMailSettings = service.MailSettingsGet(View.CurrentUser.UserId,
                                                               Tk.TicketId, false, ref isNotifDef);

            values.IsDefaultNotOwner = isNotifDef;

            //values.IsBehalf = Tk.IsBehalf;

            //values.OwnerMailSettings = service.MailSettingsGet(Tk.OwnerId, Tk.TicketId, false, ref isdefaultOwner);



            View.InitView(values);
        }