//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); }