public void AddRelationshipEvents(MailMessageItem item) { CoreContext.TenantManager.SetCurrentTenant(TenantId); var factory = new DaoFactory(CoreContext.TenantManager.GetCurrentTenant().TenantId, CRMConstants.DatabaseId); foreach (var contact_entity in item.LinkedCrmEntityIds) { switch (contact_entity.Type) { case ChainXCrmContactEntity.EntityTypes.Contact: var crm_contact = factory.GetContactDao().GetByID(contact_entity.Id); CRMSecurity.DemandAccessTo(crm_contact); break; case ChainXCrmContactEntity.EntityTypes.Case: var crm_case = factory.GetCasesDao().GetByID(contact_entity.Id); CRMSecurity.DemandAccessTo(crm_case); break; case ChainXCrmContactEntity.EntityTypes.Opportunity: var crm_opportunity = factory.GetDealDao().GetByID(contact_entity.Id); CRMSecurity.DemandAccessTo(crm_opportunity); break; } var file_ids = StoreAttachmentsToCrm(item, contact_entity); var content_string = GetHistoryContentJson(item); AddRelationshipEventWithCrmApi(item, contact_entity, content_string, file_ids); } }
public int GetCRMRootFolder() { if (_crmDaoFactory == null) _crmDaoFactory = new DaoFactory(CoreContext.TenantManager.GetCurrentTenant().TenantId, CRMConstants.DatabaseId); return _crmDaoFactory.GetFileDao().GetRoot(); }
internal static List<BaseCalendar> GetUserCalendars(Guid userId) { if (!DbRegistry.IsDatabaseRegistered(CRMConstants.DatabaseId)) DbRegistry.RegisterDatabase(CRMConstants.DatabaseId, WebConfigurationManager.ConnectionStrings[CRMConstants.DatabaseId]); var tenantId = CoreContext.TenantManager.GetCurrentTenant().TenantId; var crmDaoFactory = new DaoFactory(tenantId,CRMConstants.DatabaseId); var cals = new List<BaseCalendar>(); cals.Add(new CRMCalendar(crmDaoFactory,userId)); return cals; }
public CRMCalendar(DaoFactory daoFactory, Guid userId) { _daoFactory = daoFactory; Context.HtmlBackgroundColor = ""; Context.HtmlTextColor = ""; Context.CanChangeAlertType = false; Context.CanChangeTimeZone = false; Context.GetGroupMethod = () => Web.CRM.Resources.CRMCommonResource.ProductName; Id = "crm_calendar"; EventAlertType = EventAlertType.Never; Name = Web.CRM.Resources.CRMCommonResource.ProductName; Description = ""; SharingOptions = new SharingOptions(); SharingOptions.PublicItems.Add(new SharingOptions.PublicItem {Id = userId, IsGroup = false}); }
public CRMCalendar(DaoFactory daoFactory, Guid userId) { _userId = userId; _daoFactory = daoFactory; this.Context.HtmlBackgroundColor = ""; this.Context.HtmlTextColor = ""; this.Context.CanChangeAlertType = false; this.Context.CanChangeTimeZone = false; this.Context.GetGroupMethod = delegate() { return ASC.Web.CRM.Resources.CRMCommonResource.ProductName; }; this.Id = "crm_calendar"; this.EventAlertType = EventAlertType.Never; this.Name = ASC.Web.CRM.Resources.CRMCommonResource.ProductName; this.Description = ""; this.SharingOptions = new SharingOptions(); this.SharingOptions.PublicItems.Add(new SharingOptions.PublicItem() { Id = userId, IsGroup = false }); }
public void Configure() { if (!FilesIntegration.IsRegisteredFileSecurityProvider("crm", "crm_common")) { FilesIntegration.RegisterFileSecurityProvider("crm", "crm_common", new FileSecurityProvider()); } //Register prodjects' calendar events CalendarManager.Instance.RegistryCalendarProvider(userid => { if (WebItemSecurity.IsAvailableForUser(WebItemManager.CRMProductID.ToString(), userid)) { var factory = new DaoFactory(CoreContext.TenantManager.GetCurrentTenant().TenantId, CRMConstants.DatabaseId); return new List<BaseCalendar> {new CRMCalendar(factory, userid)}; } return new List<BaseCalendar>(); }); }
public void AddRelationshipEvents(MailMessageItem item) { var factory = new DaoFactory(CoreContext.TenantManager.GetCurrentTenant().TenantId, CRMConstants.DatabaseId); foreach (var contactEntity in item.LinkedCrmEntityIds) { switch (contactEntity.Type) { case ChainXCrmContactEntity.EntityTypes.Contact: var crmContact = factory.GetContactDao().GetByID(contactEntity.Id); CRMSecurity.DemandAccessTo(crmContact); break; case ChainXCrmContactEntity.EntityTypes.Case: var crmCase = factory.GetCasesDao().GetByID(contactEntity.Id); CRMSecurity.DemandAccessTo(crmCase); break; case ChainXCrmContactEntity.EntityTypes.Opportunity: var crmOpportunity = factory.GetDealDao().GetByID(contactEntity.Id); CRMSecurity.DemandAccessTo(crmOpportunity); break; } var fileIds = new List<int>(); foreach (var attachment in item.Attachments.FindAll(attach => !attach.isEmbedded)) { using (var file = AttachmentManager.GetAttachmentStream(attachment)) { var uploadedFileId = ApiHelper.UploadToCrm(file.FileStream, file.FileName, attachment.contentType, contactEntity); if (uploadedFileId > 0) { fileIds.Add(uploadedFileId); } } } var contentString = GetHistoryContentJson(item); ApiHelper.AddToCrmHistory(item, contactEntity, contentString, fileIds); } }
public IEnumerable<FileWrapper> GetCRMFiles(int contactID, EntityType entityType, int entityID) { if (_crmDaoFactory == null) _crmDaoFactory = new DaoFactory(CoreContext.TenantManager.GetCurrentTenant().TenantId, CRMConstants.DatabaseId); var members = new List<int>(); if (contactID > 0) { members.Add(contactID); if (_crmDaoFactory.GetContactDao().GetByID(contactID) is Company) members.AddRange(_crmDaoFactory.GetContactDao().GetMembers(contactID).Select(item => item.ID)); } var answer = _crmDaoFactory.GetRelationshipEventDao().GetAllFiles(members.ToArray(), entityType, entityID) .ConvertAll(file => new FileWrapper(file)); return answer; }
public CRMSecurityObjectProvider(DaoFactory daoFactory) { _daoFactory = daoFactory; }
public static void SendAutoReminderAboutTask(DateTime scheduleDate) { var execAlert = new List<int>(); var defaultDao = new DaoFactory(Tenant.DEFAULT_TENANT, CRMConstants.StorageModule); foreach (var row in defaultDao.GetTaskDao() .GetInfoForReminder(scheduleDate)) { var tenantId = Convert.ToInt32(row[0]); var taskId = Convert.ToInt32(row[1]); var deadline = Convert.ToDateTime(row[2]); var alertValue = Convert.ToInt32(row[3]); var responsibleID = !string.IsNullOrEmpty(Convert.ToString(row[4])) ? new Guid(Convert.ToString(row[4])) : Guid.Empty; var deadlineReminderDate = deadline.AddMinutes(-alertValue); if (deadlineReminderDate.Subtract(scheduleDate).Minutes > 1) continue; execAlert.Add(taskId); var tenant = CoreContext.TenantManager.GetTenant(tenantId); if (tenant == null || tenant.Status != TenantStatus.Active || TariffState.NotPaid <= CoreContext.PaymentManager.GetTariff(tenant.TenantId).State) { continue; } try { CoreContext.TenantManager.SetCurrentTenant(tenant); SecurityContext.AuthenticateMe(ASC.Core.Configuration.Constants.CoreSystem); var user = CoreContext.UserManager.GetUsers(responsibleID); if (!(!Constants.LostUser.Equals(user) && user.Status == EmployeeStatus.Active)) continue; SecurityContext.AuthenticateMe(user.ID); Thread.CurrentThread.CurrentCulture = user.GetCulture(); Thread.CurrentThread.CurrentUICulture = user.GetCulture(); var task = new DaoFactory(tenantId, CRMConstants.StorageModule).GetTaskDao().GetByID(taskId); if (task == null) continue; NotifyClient.Instance.SendTaskReminder(task); } catch (Exception ex) { LogManager.GetLogger("ASC.CRM.Tasks").Error("SendAutoReminderAboutTask, tenant: " + tenant.TenantDomain, ex); } } defaultDao.GetTaskDao().ExecAlert(execAlert); }
public int AttachCRMFiles(int contactID, EntityType entityType, int entityID, IEnumerable<int> fileIDs) { if (_crmDaoFactory == null) _crmDaoFactory = new DaoFactory(CoreContext.TenantManager.GetCurrentTenant().TenantId, CRMConstants.DatabaseId); return _crmDaoFactory.GetRelationshipEventDao().AttachFiles(contactID, entityType, entityID, fileIDs.ToArray()); }
private Feed ToFeed(Cases cases) { var dao = new DaoFactory(Tenant, DbId).GetContactDao(); var contactsString = Helper.GetContactsString(cases.Members, dao); var itemUrl = "/products/crm/cases.aspx?id=" + cases.ID + "#profile"; return new Feed(cases.CreateBy, cases.CreateOn) { Item = item, ItemId = cases.ID.ToString(CultureInfo.InvariantCulture), ItemUrl = CommonLinkUtility.ToAbsolute(itemUrl), Product = Product, Module = Name, Title = cases.Title, AdditionalInfo = contactsString, Keywords = cases.Title, HasPreview = false, CanComment = false, GroupId = string.Format("{0}_{1}", item, cases.ID) }; }
public MailTemplateManager(DaoFactory daoFactory) { _daoFactory = daoFactory; }
public MailTemplateManager() { _daoFactory = Global.DaoFactory; }
public SendBatchEmailsOperation( List<int> fileID, List<int> contactID, String subject, String bodyTempate, bool storeInHistory) { Id = TenantProvider.CurrentTenantID; Percentage = 0; _fileID = fileID; _contactID = contactID; _subject = subject; _bodyTempate = bodyTempate; _log = LogManager.GetLogger("ASC.CRM.MailSender"); _tenantID = TenantProvider.CurrentTenantID; _daoFactory = Global.DaoFactory; _smtpSetting = Global.TenantSettings.SMTPServerSetting; _currUser = ASC.Core.SecurityContext.CurrentAccount.ID; _storeInHistory = storeInHistory; Status = new { RecipientCount = _contactID.Count, EstimatedTime = 0, DeliveryCount = 0 }; }
public void DeleteCRMFile(int fileID) { if (_crmDaoFactory == null) _crmDaoFactory = new DaoFactory(CoreContext.TenantManager.GetCurrentTenant().TenantId, CRMConstants.DatabaseId); _crmDaoFactory.GetRelationshipEventDao().RemoveFile(fileID); }
public void LinkChainToCrm(int id_message, int id_tenant, string id_user, List<CrmContactEntity> contact_ids) { var factory = new DaoFactory(CoreContext.TenantManager.GetCurrentTenant().TenantId, CRMConstants.DatabaseId); foreach (var crm_contact_entity in contact_ids) { switch (crm_contact_entity.Type) { case ChainXCrmContactEntity.EntityTypes.Contact: var crm_contact = factory.GetContactDao().GetByID(crm_contact_entity.Id); CRMSecurity.DemandAccessTo(crm_contact); break; case ChainXCrmContactEntity.EntityTypes.Case: var crm_case = factory.GetCasesDao().GetByID(crm_contact_entity.Id); CRMSecurity.DemandAccessTo(crm_case); break; case ChainXCrmContactEntity.EntityTypes.Opportunity: var crm_opportunity = factory.GetDealDao().GetByID(crm_contact_entity.Id); CRMSecurity.DemandAccessTo(crm_opportunity); break; } } using (var db = GetDb()) { var chain_info = GetMessageChainInfo(db, id_tenant, id_user, id_message); MarkChainAsCrmLinked(db, chain_info.id, chain_info.mailbox, id_tenant, contact_ids); AddChainMailsToCrmHistory(db, chain_info, id_tenant, id_user, contact_ids); } }
public SearchDao(int tenantID, DaoFactory daoFactory) : base(tenantID) { DaoFactory = daoFactory; }