public List <TicketFile> AttachmentsLinkFiles(Message message, List <ModuleActionLink> links)
        {
            List <TicketFile> attachments = null;

            if (message == null || links == null || !links.Any())
            {
                return(null);
            }

            TicketUser usr = this.UserGetfromPerson(UC.CurrentUserID);

            if (message.Creator == null || message.Creator.Id != usr.Id)
            {
                return(null);
            }

            Boolean isInTransaction = Manager.IsInTransaction();

            try
            {
                if (!isInTransaction)
                {
                    Manager.BeginTransaction();
                }
                litePerson person = CurrentLitePerson;

                if (person != null && person.Id > 0)
                {
                    DateTime date = DateTime.Now;
                    attachments = new List <TicketFile>();
                    foreach (ModuleActionLink link in links)
                    {
                        TicketFile attachment = QueryAttachments(a => a.Deleted == BaseStatusDeleted.None && a.Message != null && a.Message.Id == message.Id).ToList().Where(a => a.Item == (liteRepositoryItem)link.ModuleObject.ObjectOwner).Skip(0).Take(1).ToList().FirstOrDefault();
                        if (attachment == null)
                        {
                            attachment = new TicketFile();
                            attachment.CreateMetaInfo(person, UC.IpAddress, UC.ProxyIpAddress, date);
                            attachment.Item       = (liteRepositoryItem)link.ModuleObject.ObjectOwner;
                            attachment.Message    = message;
                            attachment.TicketId   = ((message != null && message.Ticket != null) ? message.Ticket.Id : 0);
                            attachment.Name       = attachment.Item.DisplayName;
                            attachment.Visibility = Domain.Enums.FileVisibility.visible;

                            Manager.SaveOrUpdate(attachment);


                            liteModuleLink mLink = new liteModuleLink(link.Description, link.Permission, link.Action);
                            mLink.CreateMetaInfo(person.Id, UC.IpAddress, UC.ProxyIpAddress, date);
                            mLink.DestinationItem = (ModuleObject)link.ModuleObject;
                            mLink.AutoEvaluable   = false;
                            mLink.SourceItem      = ModuleObject.CreateLongObject(message.Id, message, (int)ModuleTicket.ObjectType.Message, 0, ModuleTicket.UniqueCode, ServiceModuleID());
                            Manager.SaveOrUpdate(mLink);
                            attachment.Link = mLink;
                            Manager.SaveOrUpdate(attachment);
                        }
                        else if (attachment.Deleted != BaseStatusDeleted.None)
                        {
                            attachment.RecoverMetaInfo(person, UC.IpAddress, UC.ProxyIpAddress, date);
                            if (attachment.Item != null && attachment.Item.IsInternal && attachment.Item.Deleted != BaseStatusDeleted.None)
                            {
                                attachment.Item.Deleted = BaseStatusDeleted.None;
                                attachment.Item.UpdateMetaInfo(person.Id, UC.IpAddress, UC.ProxyIpAddress, date);
                                Manager.SaveOrUpdate(attachment.Item);
                            }
                            Manager.SaveOrUpdate(attachment);
                        }
                        attachments.Add(attachment);
                    }
                }
                if (!isInTransaction)
                {
                    Manager.Commit();
                }
            }
            catch (Exception ex)
            {
                if (!isInTransaction)
                {
                    Manager.RollBack();
                }
                attachments = null;
            }
            return(attachments);
        }
        public List <TicketFile> AttachmentsAddFiles(Message message, TicketUser user, List <dtoModuleUploadedItem> items)
        {
            List <TicketFile> attachments = null;

            if (message == null || message.Ticket == null || user == null || items == null || !items.Any())
            {
                return(null);
            }
            if (message.Creator == null || message.Creator.Id != user.Id)
            {
                return(null);
            }
            Boolean isInTransaction = Manager.IsInTransaction();

            try
            {
                if (!isInTransaction)
                {
                    Manager.BeginTransaction();
                }
                litePerson person = (user.Person ?? Manager.GetLiteUnknownUser());
                if (items.Any() && person != null && person.TypeID != (int)UserTypeStandard.Guest && person.TypeID != (int)UserTypeStandard.PublicUser)
                {
                    attachments = new List <TicketFile>();
                    DateTime date = DateTime.Now;
                    foreach (dtoModuleUploadedItem item in items)
                    {
                        TicketFile attachment = new TicketFile();
                        attachment.CreateMetaInfo(person, UC.IpAddress, UC.ProxyIpAddress, date);
                        attachment.Item       = item.ItemAdded;
                        attachment.Message    = message;
                        attachment.TicketId   = ((message != null && message.Ticket != null) ? message.Ticket.Id : 0);
                        attachment.Name       = attachment.Item.DisplayName;
                        attachment.Visibility = Domain.Enums.FileVisibility.visible;
                        Manager.SaveOrUpdate(attachment);
                        liteModuleLink link = new liteModuleLink(item.Link.Description, item.Link.Permission, item.Link.Action);
                        link.CreateMetaInfo(person.Id, UC.IpAddress, UC.ProxyIpAddress, date);
                        link.DestinationItem = (ModuleObject)item.Link.ModuleObject;
                        link.AutoEvaluable   = false;
                        link.SourceItem      = ModuleObject.CreateLongObject(message.Id, message, (int)ModuleTicket.ObjectType.Message, 0, ModuleTicket.UniqueCode, ServiceModuleID());
                        Manager.SaveOrUpdate(link);
                        attachment.Link = link;

                        if (item.ItemAdded.IsInternal)
                        {
                            if (item.ItemAdded.Module == null)
                            {
                                item.ItemAdded.Module = new lm.Comol.Core.FileRepository.Domain.ItemModuleSettings();
                            }
                            item.ItemAdded.Module.IdObject     = message.Id;
                            item.ItemAdded.Module.IdObjectType = (int)ModuleTicket.ObjectType.Message;
                            Manager.SaveOrUpdate(item.ItemAdded);
                        }

                        Manager.SaveOrUpdate(attachment);
                        attachments.Add(attachment);
                    }
                }
                if (!isInTransaction)
                {
                    Manager.Commit();
                }
            }
            catch (Exception ex)
            {
                if (!isInTransaction)
                {
                    Manager.RollBack();
                }
                attachments = null;
            }
            return(attachments);
        }