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