示例#1
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);
        }
        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);
        }