2020-04-16 19:41:37 +00:00
|
|
|
|
using ASC.Api.Core;
|
|
|
|
|
using ASC.Api.CRM.Wrappers;
|
2020-04-18 17:49:09 +00:00
|
|
|
|
using ASC.Api.Documents;
|
2020-04-16 19:41:37 +00:00
|
|
|
|
using ASC.Common;
|
|
|
|
|
using ASC.Common.Web;
|
|
|
|
|
using ASC.Core;
|
2020-04-18 17:49:09 +00:00
|
|
|
|
using ASC.Core.Common.Settings;
|
|
|
|
|
using ASC.Core.Notify.Signalr;
|
|
|
|
|
using ASC.Core.Tenants;
|
2021-03-01 17:36:18 +00:00
|
|
|
|
using ASC.Core.Users;
|
2020-04-16 19:41:37 +00:00
|
|
|
|
using ASC.CRM.Core;
|
|
|
|
|
using ASC.CRM.Core.Dao;
|
|
|
|
|
using ASC.CRM.Core.Entities;
|
|
|
|
|
using ASC.CRM.Core.Enums;
|
2020-04-18 17:49:09 +00:00
|
|
|
|
using ASC.Data.Storage;
|
|
|
|
|
using ASC.ElasticSearch;
|
2020-04-16 19:41:37 +00:00
|
|
|
|
using ASC.MessagingSystem;
|
2020-04-18 17:49:09 +00:00
|
|
|
|
using ASC.VoipService;
|
|
|
|
|
using ASC.VoipService.Dao;
|
|
|
|
|
using ASC.Web.Api.Models;
|
2020-04-16 19:41:37 +00:00
|
|
|
|
using ASC.Web.Api.Routing;
|
2020-04-18 17:49:09 +00:00
|
|
|
|
using ASC.Web.Core.Users;
|
2020-04-16 19:41:37 +00:00
|
|
|
|
using ASC.Web.CRM.Classes;
|
2021-03-01 17:36:18 +00:00
|
|
|
|
using ASC.Web.CRM.Core.Search;
|
2020-04-16 19:41:37 +00:00
|
|
|
|
using ASC.Web.CRM.Services.NotifyService;
|
2020-04-18 17:49:09 +00:00
|
|
|
|
using ASC.Web.Files.Services.DocumentService;
|
2020-04-16 19:41:37 +00:00
|
|
|
|
using ASC.Web.Files.Services.WCFService;
|
2020-04-18 17:49:09 +00:00
|
|
|
|
using ASC.Web.Files.Utils;
|
|
|
|
|
using ASC.Web.Studio.Core;
|
|
|
|
|
using ASC.Web.Studio.Utility;
|
|
|
|
|
using Microsoft.AspNetCore.Http;
|
2020-04-16 19:41:37 +00:00
|
|
|
|
using Microsoft.AspNetCore.Mvc;
|
|
|
|
|
using System;
|
|
|
|
|
|
|
|
|
|
namespace ASC.Api.CRM
|
|
|
|
|
{
|
2021-03-02 16:29:07 +00:00
|
|
|
|
[Scope]
|
2020-04-16 19:41:37 +00:00
|
|
|
|
[DefaultRoute]
|
|
|
|
|
[ApiController]
|
|
|
|
|
public partial class CRMController : ControllerBase
|
|
|
|
|
{
|
|
|
|
|
public CRMController(CRMSecurity cRMSecurity,
|
|
|
|
|
DaoFactory daoFactory,
|
|
|
|
|
ApiContext apiContext,
|
|
|
|
|
MessageTarget messageTarget,
|
|
|
|
|
MessageService messageService,
|
|
|
|
|
NotifyClient notifyClient,
|
|
|
|
|
TaskWrapperHelper taskWrapperHelper,
|
|
|
|
|
SecurityContext securityContext,
|
|
|
|
|
UserManager userManager,
|
2021-03-01 17:36:18 +00:00
|
|
|
|
UserFormatter userFormatter,
|
2020-04-18 17:49:09 +00:00
|
|
|
|
CurrencyProvider currencyProvider,
|
|
|
|
|
Global global,
|
|
|
|
|
SettingsManager settingsManager,
|
|
|
|
|
IServiceProvider serviceProvider,
|
|
|
|
|
PdfCreator pdfCreator,
|
|
|
|
|
TenantManager tenantManager,
|
|
|
|
|
SetupInfo setupInfo,
|
|
|
|
|
FileSizeComment fileSizeComment,
|
|
|
|
|
AuthManager authManager,
|
|
|
|
|
FileUploader fileUploader,
|
|
|
|
|
ReportHelper reportHelper,
|
|
|
|
|
IHttpContextAccessor httpContextAccessor,
|
|
|
|
|
InvoiceSetting invoiceSetting,
|
|
|
|
|
OrganisationLogoManager organisationLogoManager,
|
2020-04-22 20:46:49 +00:00
|
|
|
|
ContactWrapperHelper contactBaseWrapperHelper,
|
2020-04-18 17:49:09 +00:00
|
|
|
|
ContactPhotoManager contactPhotoManager,
|
|
|
|
|
CommonLinkUtility commonLinkUtility,
|
|
|
|
|
StorageFactory storageFactory,
|
|
|
|
|
TenantUtil tenantUtil,
|
|
|
|
|
SignalrServiceClient signalrServiceClient,
|
|
|
|
|
VoipEngine voipEngine,
|
|
|
|
|
|
2021-03-02 16:29:07 +00:00
|
|
|
|
Web.Files.Classes.FilesSettingsHelper filesSettingsHelper,
|
2020-04-18 17:49:09 +00:00
|
|
|
|
ASC.Files.Core.Data.DaoFactory filesDaoFactory,
|
|
|
|
|
|
|
|
|
|
FileWrapperHelper fileWrapperHelper,
|
|
|
|
|
DisplayUserSettingsHelper displayUserSettingsHelper,
|
|
|
|
|
OpportunityWrapperHelper opportunityWrapperHelper,
|
|
|
|
|
EmployeeWraperHelper employeeWraperHelper,
|
|
|
|
|
ApiDateTimeHelper apiDateTimeHelper,
|
|
|
|
|
CurrencyInfoWrapperHelper currencyInfoWrapperHelper,
|
|
|
|
|
CurrencyRateInfoWrapperHelper currencyRateInfoWrapperHelper,
|
|
|
|
|
CurrencyRateWrapperHelper currencyRateWrapperHelper,
|
|
|
|
|
CasesWrapperHelper casesWrapperHelper,
|
|
|
|
|
InvoiceWrapperHelper invoiceWrapperHelper,
|
|
|
|
|
InvoiceItemWrapperHelper invoiceItemWrapperHelper,
|
|
|
|
|
InvoiceBaseWrapperHelper invoiceBaseWrapperHelper,
|
|
|
|
|
InvoiceLineWrapperHelper invoiceLineWrapperHelper,
|
|
|
|
|
InvoiceTaxWrapperHelper invoiceTaxWrapperHelper,
|
2020-04-22 20:46:49 +00:00
|
|
|
|
ContactInfoWrapperHelper contactInfoWrapperHelper,
|
2021-03-01 17:36:18 +00:00
|
|
|
|
HistoryCategoryWrapperHelper historyCategoryBaseWrapperHelper,
|
|
|
|
|
TaskCategoryWrapperHelper taskCategoryWrapperHelper,
|
|
|
|
|
VoipCallWrapperHelper voipCallWrapperHelper,
|
2020-04-22 20:46:49 +00:00
|
|
|
|
|
2020-04-18 17:49:09 +00:00
|
|
|
|
RelationshipEventWrapperHelper relationshipEventWrapperHelper,
|
2021-03-02 16:29:07 +00:00
|
|
|
|
DocbuilderReportsUtilityHelper docbuilderReportsUtilityHelper,
|
2020-04-18 17:49:09 +00:00
|
|
|
|
|
2021-03-01 17:36:18 +00:00
|
|
|
|
FactoryIndexerContactInfo factoryIndexerContactInfo,
|
|
|
|
|
FactoryIndexerCase factoryIndexerCase,
|
|
|
|
|
FactoryIndexerFieldValue factoryIndexerFieldValue,
|
|
|
|
|
|
|
|
|
|
// ExportToCsv exportToCsv,
|
|
|
|
|
ImportFromCSV importFromCSV,
|
|
|
|
|
ImportFromCSVManager importFromCSVManager)
|
2020-04-16 19:41:37 +00:00
|
|
|
|
{
|
2020-04-18 17:49:09 +00:00
|
|
|
|
|
|
|
|
|
VoipEngine = voipEngine;
|
|
|
|
|
SignalrServiceClient = signalrServiceClient;
|
2020-04-22 20:46:49 +00:00
|
|
|
|
|
2020-04-18 17:49:09 +00:00
|
|
|
|
|
|
|
|
|
TenantUtil = tenantUtil;
|
|
|
|
|
StorageFactory = storageFactory;
|
|
|
|
|
CommonLinkUtility = commonLinkUtility;
|
|
|
|
|
ContactPhotoManager = contactPhotoManager;
|
2020-04-16 19:41:37 +00:00
|
|
|
|
DaoFactory = daoFactory;
|
|
|
|
|
ApiContext = apiContext;
|
|
|
|
|
CRMSecurity = cRMSecurity;
|
|
|
|
|
MessageTarget = messageTarget;
|
|
|
|
|
MessageService = messageService;
|
|
|
|
|
NotifyClient = notifyClient;
|
|
|
|
|
TaskWrapperHelper = taskWrapperHelper;
|
|
|
|
|
SecurityContext = securityContext;
|
|
|
|
|
UserManager = userManager;
|
2021-03-01 17:36:18 +00:00
|
|
|
|
UserFormatter = userFormatter;
|
2020-04-16 19:41:37 +00:00
|
|
|
|
CurrencyProvider = currencyProvider;
|
2020-04-18 17:49:09 +00:00
|
|
|
|
OpportunityWrapperHelper = opportunityWrapperHelper;
|
|
|
|
|
EmployeeWraperHelper = employeeWraperHelper;
|
|
|
|
|
ApiDateTimeHelper = apiDateTimeHelper;
|
|
|
|
|
CurrencyInfoWrapperHelper = currencyInfoWrapperHelper;
|
|
|
|
|
CurrencyRateInfoWrapperHelper = currencyRateInfoWrapperHelper;
|
|
|
|
|
CurrencyRateWrapperHelper = currencyRateWrapperHelper;
|
|
|
|
|
CasesWrapperHelper = casesWrapperHelper;
|
|
|
|
|
ServiceProvider = serviceProvider;
|
2020-04-22 20:46:49 +00:00
|
|
|
|
|
2021-03-01 17:36:18 +00:00
|
|
|
|
FactoryIndexerCase = factoryIndexerCase;
|
|
|
|
|
FactoryIndexerFieldValue = factoryIndexerFieldValue;
|
|
|
|
|
FactoryIndexerContactInfo = factoryIndexerContactInfo;
|
2020-04-22 20:46:49 +00:00
|
|
|
|
|
2020-04-18 17:49:09 +00:00
|
|
|
|
InvoiceWrapperHelper = invoiceWrapperHelper;
|
|
|
|
|
InvoiceItemWrapperHelper = invoiceItemWrapperHelper;
|
|
|
|
|
InvoiceBaseWrapperHelper = invoiceBaseWrapperHelper;
|
|
|
|
|
InvoiceLineWrapperHelper = invoiceLineWrapperHelper;
|
|
|
|
|
InvoiceTaxWrapperHelper = invoiceTaxWrapperHelper;
|
|
|
|
|
RelationshipEventWrapperHelper = relationshipEventWrapperHelper;
|
|
|
|
|
FileWrapperHelper = fileWrapperHelper;
|
|
|
|
|
OrganisationLogoManager = organisationLogoManager;
|
|
|
|
|
|
|
|
|
|
SetupInfo = setupInfo;
|
|
|
|
|
FileSizeComment = fileSizeComment;
|
|
|
|
|
TenantManager = tenantManager;
|
|
|
|
|
|
|
|
|
|
AuthManager = authManager;
|
|
|
|
|
PdfCreator = pdfCreator;
|
|
|
|
|
FilesDaoFactory = filesDaoFactory;
|
|
|
|
|
|
2021-03-02 16:29:07 +00:00
|
|
|
|
FilesSettingsHelper = filesSettingsHelper;
|
2020-04-18 17:49:09 +00:00
|
|
|
|
FileUploader = fileUploader;
|
|
|
|
|
Global = global;
|
|
|
|
|
ReportHelper = reportHelper;
|
|
|
|
|
HttpContextAccessor = httpContextAccessor;
|
2021-03-02 16:29:07 +00:00
|
|
|
|
DocbuilderReportsUtilityHelper = docbuilderReportsUtilityHelper;
|
2020-04-18 17:49:09 +00:00
|
|
|
|
InvoiceSetting = invoiceSetting;
|
|
|
|
|
|
2021-03-01 17:36:18 +00:00
|
|
|
|
ContactInfoWrapperHelper = contactInfoWrapperHelper;
|
|
|
|
|
HistoryCategoryWrapperHelper = historyCategoryBaseWrapperHelper;
|
2020-04-22 20:46:49 +00:00
|
|
|
|
ContactWrapperHelper = contactBaseWrapperHelper;
|
2021-03-01 17:36:18 +00:00
|
|
|
|
VoipCallWrapperHelper = voipCallWrapperHelper;
|
2020-04-16 19:41:37 +00:00
|
|
|
|
|
2021-03-01 17:36:18 +00:00
|
|
|
|
//ExportToCsv = exportToCsv;
|
|
|
|
|
ImportFromCSV = importFromCSV;
|
|
|
|
|
ImportFromCSVManager = importFromCSVManager;
|
|
|
|
|
}
|
2020-04-18 17:49:09 +00:00
|
|
|
|
|
2021-03-01 17:36:18 +00:00
|
|
|
|
public ImportFromCSVManager ImportFromCSVManager { get; }
|
|
|
|
|
public TaskCategoryWrapperHelper TaskCategoryWrapperHelper { get; }
|
|
|
|
|
public HistoryCategoryWrapperHelper HistoryCategoryWrapperHelper { get; }
|
2020-04-22 20:46:49 +00:00
|
|
|
|
public ContactInfoWrapperHelper ContactInfoWrapperHelper { get; }
|
2020-04-18 17:49:09 +00:00
|
|
|
|
public VoipEngine VoipEngine { get; }
|
|
|
|
|
public SignalrServiceClient SignalrServiceClient { get; }
|
|
|
|
|
public IVoipProvider VoipProvider { get; }
|
|
|
|
|
public TenantUtil TenantUtil { get; }
|
|
|
|
|
public StorageFactory StorageFactory { get; }
|
|
|
|
|
public CommonLinkUtility CommonLinkUtility { get; }
|
|
|
|
|
public ContactPhotoManager ContactPhotoManager { get; }
|
2020-04-22 20:46:49 +00:00
|
|
|
|
public ContactWrapperHelper ContactWrapperHelper { get; }
|
2021-03-01 17:36:18 +00:00
|
|
|
|
public VoipCallWrapperHelper VoipCallWrapperHelper { get; }
|
2020-04-18 17:49:09 +00:00
|
|
|
|
public OrganisationLogoManager OrganisationLogoManager { get; }
|
|
|
|
|
public InvoiceSetting InvoiceSetting { get; }
|
2021-03-02 16:29:07 +00:00
|
|
|
|
public DocbuilderReportsUtilityHelper DocbuilderReportsUtilityHelper { get; }
|
2020-04-18 17:49:09 +00:00
|
|
|
|
public IHttpContextAccessor HttpContextAccessor { get; }
|
|
|
|
|
public ReportHelper ReportHelper { get; }
|
|
|
|
|
public FileUploader FileUploader { get; }
|
2021-03-02 16:29:07 +00:00
|
|
|
|
public Web.Files.Classes.FilesSettingsHelper FilesSettingsHelper { get; }
|
2020-04-18 17:49:09 +00:00
|
|
|
|
public ASC.Files.Core.Data.DaoFactory FilesDaoFactory { get; }
|
|
|
|
|
public FileWrapperHelper FileWrapperHelper { get; }
|
|
|
|
|
public RelationshipEventWrapperHelper RelationshipEventWrapperHelper { get; }
|
|
|
|
|
public AuthManager AuthManager { get; }
|
|
|
|
|
public FileSizeComment FileSizeComment { get; }
|
|
|
|
|
public SetupInfo SetupInfo { get; }
|
|
|
|
|
public TenantManager TenantManager { get; }
|
|
|
|
|
public PdfCreator PdfCreator { get; }
|
|
|
|
|
public InvoiceTaxWrapperHelper InvoiceTaxWrapperHelper { get; }
|
|
|
|
|
public InvoiceLineWrapperHelper InvoiceLineWrapperHelper { get; }
|
|
|
|
|
public InvoiceBaseWrapperHelper InvoiceBaseWrapperHelper { get; }
|
|
|
|
|
public InvoiceItemWrapperHelper InvoiceItemWrapperHelper { get; }
|
|
|
|
|
public InvoiceWrapperHelper InvoiceWrapperHelper { get; }
|
2021-03-01 17:36:18 +00:00
|
|
|
|
public FactoryIndexerContactInfo FactoryIndexerContactInfo { get; }
|
|
|
|
|
public FactoryIndexerFieldValue FactoryIndexerFieldValue { get; }
|
|
|
|
|
public FactoryIndexerCase FactoryIndexerCase { get; }
|
2020-04-18 17:49:09 +00:00
|
|
|
|
public IServiceProvider ServiceProvider { get; }
|
|
|
|
|
public CasesWrapperHelper CasesWrapperHelper { get; }
|
|
|
|
|
public CurrencyRateWrapperHelper CurrencyRateWrapperHelper { get; }
|
|
|
|
|
public SettingsManager SettingsManager { get; }
|
|
|
|
|
public Global Global { get; }
|
|
|
|
|
public CurrencyInfoWrapperHelper CurrencyInfoWrapperHelper { get; }
|
|
|
|
|
public CurrencyRateInfoWrapperHelper CurrencyRateInfoWrapperHelper { get; }
|
|
|
|
|
public ApiDateTimeHelper ApiDateTimeHelper { get; }
|
|
|
|
|
public EmployeeWraperHelper EmployeeWraperHelper { get; }
|
|
|
|
|
public OpportunityWrapperHelper OpportunityWrapperHelper { get; }
|
|
|
|
|
public DisplayUserSettingsHelper DisplayUserSettingsHelper { get; }
|
2020-04-16 19:41:37 +00:00
|
|
|
|
public CurrencyProvider CurrencyProvider { get; }
|
2021-03-01 17:36:18 +00:00
|
|
|
|
public UserFormatter UserFormatter { get; }
|
2020-04-16 19:41:37 +00:00
|
|
|
|
public UserManager UserManager { get; }
|
|
|
|
|
public SecurityContext SecurityContext { get; }
|
|
|
|
|
public TaskWrapperHelper TaskWrapperHelper { get; }
|
|
|
|
|
public NotifyClient NotifyClient { get; }
|
|
|
|
|
|
2021-03-01 17:36:18 +00:00
|
|
|
|
private readonly ApiContext ApiContext;
|
2020-04-16 19:41:37 +00:00
|
|
|
|
public MessageService MessageService { get; }
|
|
|
|
|
public MessageTarget MessageTarget { get; }
|
|
|
|
|
public CRMSecurity CRMSecurity { get; }
|
|
|
|
|
public DaoFactory DaoFactory { get; }
|
2021-03-01 17:36:18 +00:00
|
|
|
|
// public ExportToCsv ExportToCsv { get; }
|
|
|
|
|
public ImportFromCSV ImportFromCSV { get; }
|
2020-04-16 19:41:37 +00:00
|
|
|
|
|
|
|
|
|
private static EntityType ToEntityType(string entityTypeStr)
|
|
|
|
|
{
|
|
|
|
|
EntityType entityType;
|
|
|
|
|
|
|
|
|
|
if (string.IsNullOrEmpty(entityTypeStr)) return EntityType.Any;
|
|
|
|
|
|
|
|
|
|
switch (entityTypeStr.ToLower())
|
|
|
|
|
{
|
|
|
|
|
case "person":
|
|
|
|
|
entityType = EntityType.Person;
|
|
|
|
|
break;
|
|
|
|
|
case "company":
|
|
|
|
|
entityType = EntityType.Company;
|
|
|
|
|
break;
|
|
|
|
|
case "contact":
|
|
|
|
|
entityType = EntityType.Contact;
|
|
|
|
|
break;
|
|
|
|
|
case "opportunity":
|
|
|
|
|
entityType = EntityType.Opportunity;
|
|
|
|
|
break;
|
|
|
|
|
case "case":
|
|
|
|
|
entityType = EntityType.Case;
|
|
|
|
|
break;
|
|
|
|
|
default:
|
|
|
|
|
entityType = EntityType.Any;
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return entityType;
|
|
|
|
|
}
|
|
|
|
|
|
2020-04-22 20:46:49 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2020-04-16 19:41:37 +00:00
|
|
|
|
private string GetEntityTitle(EntityType entityType, int entityId, bool checkAccess, out DomainObject entity)
|
|
|
|
|
{
|
|
|
|
|
switch (entityType)
|
|
|
|
|
{
|
|
|
|
|
case EntityType.Contact:
|
|
|
|
|
case EntityType.Company:
|
|
|
|
|
case EntityType.Person:
|
2020-04-22 20:46:49 +00:00
|
|
|
|
var conatct = (entity = DaoFactory.GetContactDao().GetByID(entityId)) as ASC.CRM.Core.Entities.Contact;
|
2020-04-16 19:41:37 +00:00
|
|
|
|
if (conatct == null || (checkAccess && !CRMSecurity.CanAccessTo(conatct)))
|
|
|
|
|
throw new ItemNotFoundException();
|
|
|
|
|
return conatct.GetTitle();
|
|
|
|
|
case EntityType.Opportunity:
|
|
|
|
|
var deal = (entity = DaoFactory.GetDealDao().GetByID(entityId)) as Deal;
|
|
|
|
|
if (deal == null || (checkAccess && !CRMSecurity.CanAccessTo(deal)))
|
|
|
|
|
throw new ItemNotFoundException();
|
|
|
|
|
return deal.Title;
|
|
|
|
|
case EntityType.Case:
|
|
|
|
|
var cases = (entity = DaoFactory.GetCasesDao().GetByID(entityId)) as Cases;
|
|
|
|
|
if (cases == null || (checkAccess && !CRMSecurity.CanAccessTo(cases)))
|
|
|
|
|
throw new ItemNotFoundException();
|
|
|
|
|
return cases.Title;
|
|
|
|
|
default:
|
|
|
|
|
throw new ArgumentException("Invalid entityType: " + entityType);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|