migrate DAO to EF Core
This commit is contained in:
parent
08d999bc1d
commit
cc2824a660
@ -17,6 +17,7 @@
|
||||
<ProjectReference Include="..\..\..\common\ASC.Core.Common\ASC.Core.Common.csproj" />
|
||||
<ProjectReference Include="..\..\..\web\ASC.Web.Core\ASC.Web.Core.csproj" />
|
||||
<ProjectReference Include="..\..\..\web\ASC.Web.Studio\ASC.Web.Studio.csproj" />
|
||||
<ProjectReference Include="..\..\ASC.Files\Server\ASC.Files.csproj" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
|
@ -85,7 +85,7 @@ namespace ASC.Web.CRM.Classes
|
||||
{
|
||||
var apiUrl = String.Format("{0}project/securityinfo.json", SetupInfo.WebApiBaseUrl);
|
||||
|
||||
var cacheKey = String.Format("{0}-{1}", ASC.Core.SecurityContext.CurrentAccount.ID, apiUrl);
|
||||
var cacheKey = String.Format("{0}-{1}", SecurityContext.CurrentAccount.ID, apiUrl);
|
||||
|
||||
bool canCreateProject;
|
||||
|
||||
|
@ -58,16 +58,6 @@ namespace ASC.CRM.Core.Dao
|
||||
CRMDbContext = dbContextManager.Get(CRMConstants.DatabaseId);
|
||||
TenantID = tenantManager.GetCurrentTenant().TenantId;
|
||||
SecurityContext = securityContext;
|
||||
}
|
||||
|
||||
/*
|
||||
protected readonly String _invoiceItemCacheKey;
|
||||
protected readonly String _invoiceTaxCacheKey;
|
||||
protected readonly String _invoiceLineCacheKey;
|
||||
*/
|
||||
protected AbstractDao(int tenantID)
|
||||
{
|
||||
TenantID = tenantID;
|
||||
|
||||
_supportedEntityType.Add(EntityType.Company);
|
||||
_supportedEntityType.Add(EntityType.Person);
|
||||
@ -93,8 +83,16 @@ namespace ASC.CRM.Core.Dao
|
||||
_cache.Insert(_invoiceLineCacheKey, String.Empty);
|
||||
}
|
||||
*/
|
||||
|
||||
|
||||
}
|
||||
|
||||
/*
|
||||
protected readonly String _invoiceItemCacheKey;
|
||||
protected readonly String _invoiceTaxCacheKey;
|
||||
protected readonly String _invoiceLineCacheKey;
|
||||
*/
|
||||
|
||||
protected int TenantID { get; private set; }
|
||||
|
||||
protected List<int> SearchByTags(EntityType entityType, int[] exceptIDs, IEnumerable<String> tags)
|
||||
@ -106,17 +104,17 @@ namespace ASC.CRM.Core.Dao
|
||||
|
||||
foreach (var tag in tags) {
|
||||
tagIDs.Add(CRMDbContext
|
||||
.CrmTag
|
||||
.Where(x => x.EntityType == (int)entityType && String.Compare(x.Title, tag.Trim(), true) == 0)
|
||||
.Tags
|
||||
.Where(x => x.EntityType == entityType && String.Compare(x.Title, tag.Trim(), true) == 0)
|
||||
.Select(x => x.Id).Single());
|
||||
}
|
||||
|
||||
Expression<Func<CrmEntityTag, bool>> exp = null;
|
||||
Expression<Func<DbEntityTag, bool>> exp = null;
|
||||
|
||||
if (exceptIDs != null && exceptIDs.Length > 0)
|
||||
exp = x => exceptIDs.Contains(x.EntityId) && x.EntityType == (int)entityType;
|
||||
exp = x => exceptIDs.Contains(x.EntityId) && x.EntityType == entityType;
|
||||
else
|
||||
exp = x => x.EntityType == (int)entityType;
|
||||
exp = x => x.EntityType == entityType;
|
||||
|
||||
|
||||
throw new NotImplementedException();
|
||||
@ -143,14 +141,14 @@ namespace ASC.CRM.Core.Dao
|
||||
|
||||
protected Dictionary<int, int[]> GetRelativeToEntity(int[] contactID, EntityType entityType, int[] entityID)
|
||||
{
|
||||
Expression<Func<CrmEntityContact, bool>> exp = null;
|
||||
Expression<Func<DbEntityContact, bool>> exp = null;
|
||||
|
||||
if (contactID != null && contactID.Length > 0 && (entityID == null || entityID.Length == 0))
|
||||
exp = x => x.EntityType == (int)entityType && contactID.Contains(x.ContactId);
|
||||
else if (entityID != null && entityID.Length > 0 && (contactID == null || contactID.Length == 0))
|
||||
exp = x => x.EntityType == (int)entityType && entityID.Contains(x.EntityId);
|
||||
|
||||
return CRMDbContext.CrmEntityContact.Where(exp).GroupBy(x => x.EntityId).ToDictionary(
|
||||
return CRMDbContext.EntityContact.Where(exp).GroupBy(x => x.EntityId).ToDictionary(
|
||||
x => x.Key,
|
||||
x => x.Select(x => Convert.ToInt32(x.ContactId)).ToArray());
|
||||
}
|
||||
@ -163,13 +161,13 @@ namespace ASC.CRM.Core.Dao
|
||||
protected int[] GetRelativeToEntityInDb(int? contactID, EntityType entityType, int? entityID)
|
||||
{
|
||||
if (contactID.HasValue && !entityID.HasValue)
|
||||
return CRMDbContext.CrmEntityContact
|
||||
return CRMDbContext.EntityContact
|
||||
.Where(x => x.EntityType == (int)entityType && x.ContactId == contactID.Value)
|
||||
.Select(x => x.EntityId)
|
||||
.ToArray();
|
||||
|
||||
if (!contactID.HasValue && entityID.HasValue)
|
||||
return CRMDbContext.CrmEntityContact
|
||||
return CRMDbContext.EntityContact
|
||||
.Where(x => x.EntityType == (int)entityType && x.EntityId == entityID.Value)
|
||||
.Select(x => x.ContactId)
|
||||
.ToArray();
|
||||
@ -184,17 +182,17 @@ namespace ASC.CRM.Core.Dao
|
||||
|
||||
using var tx = CRMDbContext.Database.BeginTransaction();
|
||||
|
||||
var exists = CRMDbContext.CrmEntityContact
|
||||
var exists = CRMDbContext.EntityContact
|
||||
.Where(x => x.EntityType == (int)entityType && x.EntityId == entityID)
|
||||
.Select(x => x.ContactId)
|
||||
.ToArray();
|
||||
|
||||
foreach (var existContact in exists)
|
||||
{
|
||||
var items = CRMDbContext.CrmEntityContact
|
||||
var items = CRMDbContext.EntityContact
|
||||
.Where(x => x.EntityType == (int)entityType && x.EntityId == entityID && x.ContactId == existContact);
|
||||
|
||||
CRMDbContext.CrmEntityContact.RemoveRange(items);
|
||||
CRMDbContext.EntityContact.RemoveRange(items);
|
||||
}
|
||||
|
||||
if (!(contactID == null || contactID.Length == 0))
|
||||
@ -206,7 +204,7 @@ namespace ASC.CRM.Core.Dao
|
||||
|
||||
protected void SetRelative(int contactID, EntityType entityType, int entityID)
|
||||
{
|
||||
CRMDbContext.CrmEntityContact.Add(new CrmEntityContact
|
||||
CRMDbContext.EntityContact.Add(new DbEntityContact
|
||||
{
|
||||
ContactId = contactID,
|
||||
EntityType = (int)entityType,
|
||||
@ -221,7 +219,7 @@ namespace ASC.CRM.Core.Dao
|
||||
if ((contactID == null || contactID.Length == 0) && (entityID == null || entityID.Length == 0))
|
||||
throw new ArgumentException();
|
||||
|
||||
Expression<Func<CrmEntityContact, bool>> expr = null;
|
||||
Expression<Func<DbEntityContact, bool>> expr = null;
|
||||
|
||||
if (contactID != null && contactID.Length > 0)
|
||||
expr = x => contactID.Contains(x.ContactId);
|
||||
@ -229,7 +227,7 @@ namespace ASC.CRM.Core.Dao
|
||||
if (entityID != null && entityID.Length > 0)
|
||||
expr = x => entityID.Contains(x.EntityId) && x.EntityType == (int)entityType;
|
||||
|
||||
var dbCrmEntity = CRMDbContext.CrmEntityContact;
|
||||
var dbCrmEntity = CRMDbContext.EntityContact;
|
||||
|
||||
dbCrmEntity.RemoveRange(dbCrmEntity.Where(expr));
|
||||
|
||||
@ -255,14 +253,14 @@ namespace ASC.CRM.Core.Dao
|
||||
|
||||
public int SaveOrganisationLogo(byte[] bytes)
|
||||
{
|
||||
var entity = new CrmOrganisationLogo
|
||||
var entity = new DbOrganisationLogo
|
||||
{
|
||||
Content = Convert.ToBase64String(bytes),
|
||||
CreateOn = DateTime.UtcNow,
|
||||
CreateBy = SecurityContext.CurrentAccount.ID.ToString()
|
||||
};
|
||||
|
||||
CRMDbContext.CrmOrganisationLogo.Add(entity);
|
||||
CRMDbContext.OrganisationLogo.Add(entity);
|
||||
|
||||
CRMDbContext.SaveChanges();
|
||||
|
||||
@ -275,7 +273,7 @@ namespace ASC.CRM.Core.Dao
|
||||
if (logo_id <= 0) throw new ArgumentException();
|
||||
|
||||
|
||||
return CRMDbContext.CrmOrganisationLogo
|
||||
return CRMDbContext.OrganisationLogo
|
||||
.Where(x => x.Id == logo_id)
|
||||
.Select(x => x.Content)
|
||||
.FirstOrDefault();
|
||||
@ -301,15 +299,20 @@ namespace ASC.CRM.Core.Dao
|
||||
protected string GetTenantColumnName(string table)
|
||||
{
|
||||
var tenant = "tenant_id";
|
||||
|
||||
if (!table.Contains(" ")) return tenant;
|
||||
|
||||
return table.Substring(table.IndexOf(" ")).Trim() + "." + tenant;
|
||||
|
||||
}
|
||||
|
||||
|
||||
protected static Guid ToGuid(object guid)
|
||||
{
|
||||
var str = guid as string;
|
||||
|
||||
return !string.IsNullOrEmpty(str) ? new Guid(str) : Guid.Empty;
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -26,10 +26,13 @@
|
||||
|
||||
using ASC.Collections;
|
||||
using ASC.Core;
|
||||
using ASC.Core.Common.EF;
|
||||
using ASC.Core.Tenants;
|
||||
using ASC.CRM.Core.EF;
|
||||
using ASC.CRM.Core.Entities;
|
||||
using ASC.CRM.Core.Enums;
|
||||
using ASC.Web.CRM.Core.Search;
|
||||
using ASC.Web.Files.Api;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Globalization;
|
||||
@ -81,23 +84,31 @@ namespace ASC.CRM.Core.Dao
|
||||
|
||||
public class CasesDao : AbstractDao
|
||||
{
|
||||
public CasesDao(int tenantID)
|
||||
: base(tenantID)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
#region Property
|
||||
|
||||
public CRMSecurity CRMSecurity { get; }
|
||||
|
||||
#endregion
|
||||
|
||||
public CasesDao(CRMSecurity cRMSecurity)
|
||||
public CasesDao(
|
||||
DbContextManager<CRMDbContext> dbContextManager,
|
||||
TenantManager tenantManager,
|
||||
SecurityContext securityContext,
|
||||
CRMSecurity cRMSecurity,
|
||||
TenantUtil tenantUtil,
|
||||
FilesIntegration filesIntegration
|
||||
) :
|
||||
base(dbContextManager,
|
||||
tenantManager,
|
||||
securityContext)
|
||||
{
|
||||
CRMSecurity = cRMSecurity;
|
||||
TenantUtil = tenantUtil;
|
||||
FilesIntegration = filesIntegration;
|
||||
}
|
||||
|
||||
public CoreContext CoreContext { get; }
|
||||
|
||||
public FilesIntegration FilesIntegration { get; }
|
||||
|
||||
public TenantUtil TenantUtil { get; }
|
||||
|
||||
public CRMSecurity CRMSecurity { get; }
|
||||
|
||||
public void AddMember(int caseID, int memberID)
|
||||
{
|
||||
SetRelative(memberID, EntityType.Case, caseID);
|
||||
@ -125,16 +136,17 @@ namespace ASC.CRM.Core.Dao
|
||||
|
||||
public virtual int[] SaveCasesList(List<Cases> items)
|
||||
{
|
||||
using (var tx = Db.BeginTransaction())
|
||||
{
|
||||
using var tx = CRMDbContext.Database.BeginTransaction();
|
||||
|
||||
var result = items.Select(item => CreateCasesInDb(item.Title)).ToArray();
|
||||
|
||||
tx.Commit();
|
||||
|
||||
// Delete relative keys
|
||||
_cache.Remove(new Regex(TenantID.ToString(CultureInfo.InvariantCulture) + "cases.*"));
|
||||
|
||||
return result;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public Cases CloseCases(int caseID)
|
||||
{
|
||||
@ -146,12 +158,22 @@ namespace ASC.CRM.Core.Dao
|
||||
|
||||
CRMSecurity.DemandAccessTo(cases);
|
||||
|
||||
Db.ExecuteNonQuery(
|
||||
Update("crm_case")
|
||||
.Set("is_closed", true)
|
||||
.Where("id", caseID)
|
||||
);
|
||||
CRMDbContext.Cases.Update(new DbCase
|
||||
{
|
||||
Id = cases.ID,
|
||||
CreateBy = cases.CreateBy,
|
||||
CreateOn = cases.CreateOn,
|
||||
IsClosed = true,
|
||||
LastModifedBy = cases.LastModifedBy,
|
||||
LastModifedOn = cases.LastModifedOn,
|
||||
TenantId = TenantID,
|
||||
Title = cases.Title
|
||||
});
|
||||
|
||||
CRMDbContext.SaveChanges();
|
||||
|
||||
cases.IsClosed = true;
|
||||
|
||||
return cases;
|
||||
}
|
||||
|
||||
@ -165,12 +187,22 @@ namespace ASC.CRM.Core.Dao
|
||||
|
||||
CRMSecurity.DemandAccessTo(cases);
|
||||
|
||||
Db.ExecuteNonQuery(
|
||||
Update("crm_case")
|
||||
.Set("is_closed", false)
|
||||
.Where("id", caseID)
|
||||
);
|
||||
CRMDbContext.Cases.Update(new DbCase
|
||||
{
|
||||
Id = cases.ID,
|
||||
CreateBy = cases.CreateBy,
|
||||
CreateOn = cases.CreateOn,
|
||||
IsClosed = false,
|
||||
LastModifedBy = cases.LastModifedBy,
|
||||
LastModifedOn = cases.LastModifedOn,
|
||||
TenantId = TenantID,
|
||||
Title = cases.Title
|
||||
});
|
||||
|
||||
CRMDbContext.SaveChanges();
|
||||
|
||||
cases.IsClosed = false;
|
||||
|
||||
return cases;
|
||||
}
|
||||
|
||||
@ -185,16 +217,23 @@ namespace ASC.CRM.Core.Dao
|
||||
|
||||
private int CreateCasesInDb(String title)
|
||||
{
|
||||
return Db.ExecuteScalar<int>(
|
||||
Insert("crm_case")
|
||||
.InColumnValue("id", 0)
|
||||
.InColumnValue("title", title)
|
||||
.InColumnValue("is_closed", false)
|
||||
.InColumnValue("create_on", TenantUtil.DateTimeToUtc(TenantUtil.DateTimeNow()))
|
||||
.InColumnValue("create_by", SecurityContext.CurrentAccount.ID)
|
||||
.InColumnValue("last_modifed_on", TenantUtil.DateTimeToUtc(TenantUtil.DateTimeNow()))
|
||||
.InColumnValue("last_modifed_by", SecurityContext.CurrentAccount.ID)
|
||||
.Identity(1, 0, true));
|
||||
var dbCase = new DbCase
|
||||
{
|
||||
Title = title,
|
||||
IsClosed = false,
|
||||
CreateOn = TenantUtil.DateTimeToUtc(TenantUtil.DateTimeNow()),
|
||||
CreateBy = SecurityContext.CurrentAccount.ID,
|
||||
LastModifedOn = TenantUtil.DateTimeToUtc(TenantUtil.DateTimeNow()),
|
||||
LastModifedBy = SecurityContext.CurrentAccount.ID,
|
||||
TenantId = TenantID
|
||||
};
|
||||
|
||||
CRMDbContext.Cases.Add(dbCase);
|
||||
|
||||
CRMDbContext.SaveChanges();
|
||||
|
||||
return dbCase.Id;
|
||||
|
||||
}
|
||||
|
||||
public virtual void UpdateCases(Cases cases)
|
||||
@ -204,14 +243,19 @@ namespace ASC.CRM.Core.Dao
|
||||
// Delete relative keys
|
||||
_cache.Remove(new Regex(TenantID.ToString(CultureInfo.InvariantCulture) + "invoice.*"));
|
||||
|
||||
Db.ExecuteNonQuery(
|
||||
Update("crm_case")
|
||||
.Set("title", cases.Title)
|
||||
.Set("is_closed", cases.IsClosed)
|
||||
.Set("last_modifed_on", TenantUtil.DateTimeToUtc(TenantUtil.DateTimeNow()))
|
||||
.Set("last_modifed_by", SecurityContext.CurrentAccount.ID)
|
||||
.Where("id", cases.ID)
|
||||
);
|
||||
CRMDbContext.Cases.Update(new DbCase
|
||||
{
|
||||
Id = cases.ID,
|
||||
Title = cases.Title,
|
||||
IsClosed = cases.IsClosed,
|
||||
LastModifedOn = TenantUtil.DateTimeToUtc(TenantUtil.DateTimeNow()),
|
||||
LastModifedBy = SecurityContext.CurrentAccount.ID,
|
||||
TenantId = TenantID,
|
||||
CreateBy = cases.CreateBy,
|
||||
CreateOn = cases.CreateOn
|
||||
});
|
||||
|
||||
CRMDbContext.SaveChanges();
|
||||
}
|
||||
|
||||
public virtual Cases DeleteCases(int casesID)
|
||||
@ -262,15 +306,16 @@ namespace ASC.CRM.Core.Dao
|
||||
{
|
||||
var casesID = caseses.Select(x => x.ID).ToArray();
|
||||
|
||||
using (var tagdao = FilesIntegration.GetTagDao())
|
||||
{
|
||||
var tagdao = FilesIntegration.GetTagDao();
|
||||
|
||||
var tagNames = Db.ExecuteList(Query("crm_relationship_event").Select("id")
|
||||
.Where(Exp.Eq("have_files", true) & Exp.In("entity_id", casesID) & Exp.Eq("entity_type", (int)EntityType.Case)))
|
||||
.Select(row => String.Format("RelationshipEvent_{0}", row[0])).ToArray();
|
||||
|
||||
var filesIDs = tagdao.GetTags(tagNames, TagType.System).Where(t => t.EntryType == FileEntryType.File).Select(t => t.EntryId).ToArray();
|
||||
|
||||
using (var tx = Db.BeginTransaction(true))
|
||||
{
|
||||
using var tx = CRMDbContext.Database.BeginTransaction();
|
||||
|
||||
Db.ExecuteNonQuery(Delete("crm_field_value").Where(Exp.In("entity_id", casesID) & Exp.Eq("entity_type", (int)EntityType.Case)));
|
||||
Db.ExecuteNonQuery(Delete("crm_relationship_event").Where(Exp.In("entity_id", casesID) & Exp.Eq("entity_type", (int)EntityType.Case)));
|
||||
Db.ExecuteNonQuery(Delete("crm_task").Where(Exp.In("entity_id", casesID) & Exp.Eq("entity_type", (int)EntityType.Case)));
|
||||
@ -278,21 +323,19 @@ namespace ASC.CRM.Core.Dao
|
||||
Db.ExecuteNonQuery(Delete("crm_case").Where(Exp.In("id", casesID)));
|
||||
|
||||
tx.Commit();
|
||||
}
|
||||
|
||||
caseses.ForEach(item => CoreContext.AuthorizationManager.RemoveAllAces(item));
|
||||
|
||||
if (0 < tagNames.Length)
|
||||
{
|
||||
using (var filedao = FilesIntegration.GetFileDao())
|
||||
{
|
||||
var filedao = FilesIntegration.GetFileDao();
|
||||
|
||||
foreach (var filesID in filesIDs)
|
||||
{
|
||||
filedao.DeleteFile(filesID);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//todo: remove indexes
|
||||
}
|
||||
|
||||
@ -540,7 +583,10 @@ namespace ASC.CRM.Core.Dao
|
||||
|
||||
public virtual List<Cases> GetByID(int[] ids)
|
||||
{
|
||||
return Db.ExecuteList(GetCasesSqlQuery(Exp.In("id", ids))).ConvertAll(ToCases);
|
||||
return CRMDbContext.Cases
|
||||
.Where(x => ids.Contains(x.Id))
|
||||
.ToList()
|
||||
.ConvertAll(ToCases);
|
||||
}
|
||||
|
||||
public virtual Cases GetByID(int id)
|
||||
@ -552,22 +598,23 @@ namespace ASC.CRM.Core.Dao
|
||||
return cases.Count == 0 ? null : cases[0];
|
||||
}
|
||||
|
||||
#region Private Methods
|
||||
|
||||
private static Cases ToCases(object[] row)
|
||||
private Cases ToCases(DbCase dbCase)
|
||||
{
|
||||
return new Cases
|
||||
{
|
||||
ID = Convert.ToInt32(row[0]),
|
||||
Title = Convert.ToString(row[1]),
|
||||
CreateBy = ToGuid(row[2]),
|
||||
CreateOn = TenantUtil.DateTimeFromUtc(DateTime.Parse(row[3].ToString())),
|
||||
IsClosed = Convert.ToBoolean(row[4])
|
||||
ID = dbCase.Id,
|
||||
Title = dbCase.Title,
|
||||
CreateBy = dbCase.CreateBy,
|
||||
CreateOn = dbCase.CreateOn,
|
||||
IsClosed = dbCase.IsClosed,
|
||||
LastModifedBy = dbCase.LastModifedBy,
|
||||
LastModifedOn = dbCase.LastModifedOn
|
||||
};
|
||||
}
|
||||
|
||||
private SqlQuery GetCasesSqlQuery(Exp where)
|
||||
{
|
||||
|
||||
var sqlQuery = Query("crm_case")
|
||||
.Select("id", "title", "create_by", "create_on", "is_closed");
|
||||
|
||||
@ -579,9 +626,6 @@ namespace ASC.CRM.Core.Dao
|
||||
return sqlQuery;
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
|
||||
public void ReassignCasesResponsible(Guid fromUserId, Guid toUserId)
|
||||
{
|
||||
var cases = GetAllCases();
|
||||
|
@ -26,9 +26,13 @@
|
||||
|
||||
using ASC.Collections;
|
||||
using ASC.Core;
|
||||
using ASC.Core.Common.EF;
|
||||
using ASC.Core.Tenants;
|
||||
using ASC.CRM.Core.EF;
|
||||
using ASC.CRM.Core.Entities;
|
||||
using ASC.CRM.Core.Enums;
|
||||
using ASC.ElasticSearch;
|
||||
using ASC.Web.CRM.Core.Search;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Globalization;
|
||||
@ -92,22 +96,26 @@ namespace ASC.CRM.Core.Dao
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
public class ContactDao : AbstractDao
|
||||
{
|
||||
#region Constructor
|
||||
|
||||
public ContactDao(int tenantID)
|
||||
: base(tenantID)
|
||||
public ContactDao(
|
||||
DbContextManager<CRMDbContext> dbContextManager,
|
||||
TenantManager tenantManager,
|
||||
SecurityContext securityContext,
|
||||
CRMSecurity cRMSecurity) :
|
||||
base(dbContextManager,
|
||||
tenantManager,
|
||||
securityContext)
|
||||
{
|
||||
CRMSecurity = cRMSecurity;
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region Members
|
||||
|
||||
public CRMSecurity CRMSecurity { get; }
|
||||
private readonly String _displayNameSeparator = "!=!";
|
||||
|
||||
#endregion
|
||||
@ -1139,7 +1147,7 @@ namespace ASC.CRM.Core.Dao
|
||||
.Set("status_id", contact.StatusID)
|
||||
.Set("company_id", companyID)
|
||||
.Set("last_modifed_on", TenantUtil.DateTimeToUtc(TenantUtil.DateTimeNow()))
|
||||
.Set("last_modifed_by", ASC.Core.SecurityContext.CurrentAccount.ID)
|
||||
.Set("last_modifed_by", SecurityContext.CurrentAccount.ID)
|
||||
.Set("display_name", displayName)
|
||||
.Set("is_shared", (int)contact.ShareType)
|
||||
.Set("contact_type_id", contact.ContactTypeID)
|
||||
@ -1327,10 +1335,10 @@ namespace ASC.CRM.Core.Dao
|
||||
.InColumnValue("industry", contact.Industry)
|
||||
.InColumnValue("status_id", contact.StatusID)
|
||||
.InColumnValue("company_id", companyID)
|
||||
.InColumnValue("create_by", ASC.Core.SecurityContext.CurrentAccount.ID)
|
||||
.InColumnValue("create_by", SecurityContext.CurrentAccount.ID)
|
||||
.InColumnValue("create_on", TenantUtil.DateTimeToUtc(contact.CreateOn == DateTime.MinValue ? TenantUtil.DateTimeNow() : contact.CreateOn))
|
||||
.InColumnValue("last_modifed_on", TenantUtil.DateTimeToUtc(contact.CreateOn == DateTime.MinValue ? TenantUtil.DateTimeNow() : contact.CreateOn))
|
||||
.InColumnValue("last_modifed_by", ASC.Core.SecurityContext.CurrentAccount.ID)
|
||||
.InColumnValue("last_modifed_by", SecurityContext.CurrentAccount.ID)
|
||||
.InColumnValue("display_name", displayName)
|
||||
.InColumnValue("is_shared", (int)contact.ShareType)
|
||||
.InColumnValue("contact_type_id", contact.ContactTypeID)
|
||||
|
@ -157,7 +157,7 @@ namespace ASC.CRM.Core.Dao
|
||||
.Set("contact_id", contactInfo.ContactID)
|
||||
.Set("type", (int)contactInfo.InfoType)
|
||||
.Set("last_modifed_on", TenantUtil.DateTimeToUtc(TenantUtil.DateTimeNow()))
|
||||
.Set("last_modifed_by", ASC.Core.SecurityContext.CurrentAccount.ID)
|
||||
.Set("last_modifed_by", SecurityContext.CurrentAccount.ID)
|
||||
);
|
||||
return contactInfo.ID;
|
||||
}
|
||||
@ -197,7 +197,7 @@ namespace ASC.CRM.Core.Dao
|
||||
.InColumnValue("contact_id", contactInfo.ContactID)
|
||||
.InColumnValue("type", (int)contactInfo.InfoType)
|
||||
.InColumnValue("last_modifed_on", TenantUtil.DateTimeToUtc(TenantUtil.DateTimeNow()))
|
||||
.InColumnValue("last_modifed_by", ASC.Core.SecurityContext.CurrentAccount.ID)
|
||||
.InColumnValue("last_modifed_by", SecurityContext.CurrentAccount.ID)
|
||||
.Identity(1, 0, true));
|
||||
}
|
||||
|
||||
|
@ -30,6 +30,9 @@ using System;
|
||||
using System.Collections.Generic;
|
||||
using ASC.Common.Data.Sql;
|
||||
using ASC.Common.Data.Sql.Expressions;
|
||||
using ASC.Core;
|
||||
using ASC.Core.Common.EF;
|
||||
using ASC.CRM.Core.EF;
|
||||
|
||||
#endregion
|
||||
|
||||
@ -37,9 +40,17 @@ namespace ASC.CRM.Core.Dao
|
||||
{
|
||||
public class CurrencyInfoDao : AbstractDao
|
||||
{
|
||||
public CurrencyInfoDao(int tenantID)
|
||||
: base(tenantID)
|
||||
|
||||
|
||||
public CurrencyInfoDao(DbContextManager<CRMDbContext> dbContextManager,
|
||||
TenantManager tenantManager,
|
||||
SecurityContext securityContext):
|
||||
base(dbContextManager,
|
||||
tenantManager,
|
||||
securityContext)
|
||||
{
|
||||
|
||||
|
||||
}
|
||||
|
||||
public virtual List<CurrencyInfo> GetAll()
|
||||
|
@ -23,44 +23,42 @@
|
||||
*
|
||||
*/
|
||||
|
||||
|
||||
#region Import
|
||||
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using ASC.Common.Data.Sql;
|
||||
using ASC.Common.Data.Sql.Expressions;
|
||||
using System.Linq;
|
||||
using ASC.Core;
|
||||
|
||||
#endregion
|
||||
using ASC.Core.Common.EF;
|
||||
using ASC.CRM.Core.EF;
|
||||
|
||||
namespace ASC.CRM.Core.Dao
|
||||
{
|
||||
public class CurrencyRateDao : AbstractDao
|
||||
{
|
||||
public CurrencyRateDao(int tenantID)
|
||||
: base(tenantID)
|
||||
public CurrencyRateDao(
|
||||
DbContextManager<CRMDbContext> dbContextManager,
|
||||
TenantManager tenantManager,
|
||||
SecurityContext securityContext) :
|
||||
base(dbContextManager,
|
||||
tenantManager,
|
||||
securityContext)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
public virtual List<CurrencyRate> GetAll()
|
||||
{
|
||||
return Db.ExecuteList(GetSqlQuery(null)).ConvertAll(ToCurrencyRate);
|
||||
return CRMDbContext.CurrencyRate.Where(x => x.TenantId == TenantID).ToList().ConvertAll(ToCurrencyRate);
|
||||
}
|
||||
|
||||
public virtual CurrencyRate GetByID(int id)
|
||||
{
|
||||
var rates = Db.ExecuteList(GetSqlQuery(Exp.Eq("id", id))).ConvertAll(ToCurrencyRate);
|
||||
|
||||
return rates.Count > 0 ? rates[0] : null;
|
||||
return ToCurrencyRate(CRMDbContext.CurrencyRate.FirstOrDefault(x => x.Id == id));
|
||||
}
|
||||
|
||||
public CurrencyRate GetByCurrencies(string fromCurrency, string toCurrency)
|
||||
{
|
||||
var rates = Db.ExecuteList(GetSqlQuery(Exp.Eq("from_currency", fromCurrency.ToUpper()) & Exp.Eq("to_currency", toCurrency.ToUpper())))
|
||||
.ConvertAll(ToCurrencyRate);
|
||||
|
||||
return rates.Count > 0 ? rates[0] : null;
|
||||
return ToCurrencyRate(CRMDbContext.CurrencyRate.FirstOrDefault(x => x.TenantId == TenantID && String.Compare(x.FromCurrency, fromCurrency, true) == 0 &&
|
||||
String.Compare(x.ToCurrency, toCurrency, true) == 0));
|
||||
}
|
||||
|
||||
public int SaveOrUpdate(CurrencyRate currencyRate)
|
||||
@ -71,31 +69,38 @@ namespace ASC.CRM.Core.Dao
|
||||
if (currencyRate.ID > 0 && currencyRate.Rate == 0)
|
||||
return Delete(currencyRate.ID);
|
||||
|
||||
if (Db.ExecuteScalar<int>(Query("crm_currency_rate").SelectCount().Where(Exp.Eq("id", currencyRate.ID))) == 0)
|
||||
if (CRMDbContext.CurrencyRate.Where(x => x.Id == currencyRate.ID).Any())
|
||||
{
|
||||
var query = Insert("crm_currency_rate")
|
||||
.InColumnValue("id", 0)
|
||||
.InColumnValue("from_currency", currencyRate.FromCurrency.ToUpper())
|
||||
.InColumnValue("to_currency", currencyRate.ToCurrency.ToUpper())
|
||||
.InColumnValue("rate", currencyRate.Rate)
|
||||
.InColumnValue("create_by", SecurityContext.CurrentAccount.ID)
|
||||
.InColumnValue("create_on", DateTime.UtcNow)
|
||||
.InColumnValue("last_modifed_by", SecurityContext.CurrentAccount.ID)
|
||||
.InColumnValue("last_modifed_on", DateTime.UtcNow)
|
||||
.Identity(1, 0, true);
|
||||
var itemToInsert = new DbCurrencyRate
|
||||
{
|
||||
FromCurrency = currencyRate.FromCurrency.ToUpper(),
|
||||
ToCurrency = currencyRate.ToCurrency.ToUpper(),
|
||||
Rate = currencyRate.Rate,
|
||||
CreateBy = SecurityContext.CurrentAccount.ID,
|
||||
CreateOn = DateTime.UtcNow,
|
||||
LastModifedBy = SecurityContext.CurrentAccount.ID,
|
||||
LastModifedOn = DateTime.UtcNow,
|
||||
TenantId = TenantID
|
||||
};
|
||||
|
||||
currencyRate.ID = Db.ExecuteScalar<int>(query);
|
||||
CRMDbContext.CurrencyRate.Add(itemToInsert);
|
||||
CRMDbContext.SaveChanges();
|
||||
|
||||
currencyRate.ID = itemToInsert.Id;
|
||||
}
|
||||
else
|
||||
{
|
||||
Db.ExecuteNonQuery(
|
||||
Update("crm_currency_rate")
|
||||
.Set("from_currency", currencyRate.FromCurrency.ToUpper())
|
||||
.Set("to_currency", currencyRate.ToCurrency.ToUpper())
|
||||
.Set("rate", currencyRate.Rate)
|
||||
.Set("last_modifed_on", DateTime.UtcNow)
|
||||
.Set("last_modifed_by", SecurityContext.CurrentAccount.ID)
|
||||
.Where(Exp.Eq("id", currencyRate.ID)));
|
||||
var itemToUpdate = CRMDbContext.CurrencyRate.FirstOrDefault(x => x.Id == currencyRate.ID);
|
||||
|
||||
itemToUpdate.FromCurrency = currencyRate.FromCurrency.ToUpper();
|
||||
itemToUpdate.ToCurrency = currencyRate.ToCurrency.ToUpper();
|
||||
itemToUpdate.Rate = currencyRate.Rate;
|
||||
itemToUpdate.LastModifedBy = SecurityContext.CurrentAccount.ID;
|
||||
itemToUpdate.LastModifedOn = DateTime.UtcNow;
|
||||
itemToUpdate.TenantId = TenantID;
|
||||
|
||||
CRMDbContext.Update(itemToUpdate);
|
||||
CRMDbContext.SaveChanges();
|
||||
}
|
||||
|
||||
return currencyRate.ID;
|
||||
@ -105,63 +110,62 @@ namespace ASC.CRM.Core.Dao
|
||||
{
|
||||
if (id <= 0) throw new ArgumentException();
|
||||
|
||||
var sqlQuery = Delete("crm_currency_rate")
|
||||
.Where(Exp.Eq("id", id));
|
||||
var itemToDelete = new DbCurrencyRate { Id = id };
|
||||
|
||||
Db.ExecuteNonQuery(sqlQuery);
|
||||
CRMDbContext.CurrencyRate.Attach(itemToDelete);
|
||||
CRMDbContext.CurrencyRate.Remove(itemToDelete);
|
||||
CRMDbContext.SaveChanges();
|
||||
|
||||
return id;
|
||||
}
|
||||
|
||||
public List<CurrencyRate> SetCurrencyRates(List<CurrencyRate> rates)
|
||||
{
|
||||
using (var tx = Db.BeginTransaction())
|
||||
{
|
||||
Db.ExecuteNonQuery(Delete("crm_currency_rate"));
|
||||
using var tx = CRMDbContext.Database.BeginTransaction();
|
||||
|
||||
var items = CRMDbContext.CurrencyRate.Where(x => x.TenantId == TenantID);
|
||||
|
||||
CRMDbContext.RemoveRange(items);
|
||||
|
||||
foreach (var rate in rates)
|
||||
{
|
||||
var query = Insert("crm_currency_rate")
|
||||
.InColumnValue("id", 0)
|
||||
.InColumnValue("from_currency", rate.FromCurrency.ToUpper())
|
||||
.InColumnValue("to_currency", rate.ToCurrency.ToUpper())
|
||||
.InColumnValue("rate", rate.Rate)
|
||||
.InColumnValue("create_by", SecurityContext.CurrentAccount.ID)
|
||||
.InColumnValue("create_on", DateTime.UtcNow)
|
||||
.InColumnValue("last_modifed_by", SecurityContext.CurrentAccount.ID)
|
||||
.InColumnValue("last_modifed_on", DateTime.UtcNow)
|
||||
.Identity(1, 0, true);
|
||||
var itemToInsert = new DbCurrencyRate {
|
||||
FromCurrency = rate.FromCurrency.ToUpper(),
|
||||
ToCurrency = rate.ToCurrency.ToUpper(),
|
||||
Rate = rate.Rate,
|
||||
CreateBy = SecurityContext.CurrentAccount.ID,
|
||||
CreateOn = DateTime.UtcNow,
|
||||
LastModifedBy = SecurityContext.CurrentAccount.ID,
|
||||
LastModifedOn = DateTime.UtcNow,
|
||||
TenantId = TenantID
|
||||
};
|
||||
|
||||
rate.ID = Db.ExecuteScalar<int>(query);
|
||||
CRMDbContext.CurrencyRate.Add(itemToInsert);
|
||||
|
||||
CRMDbContext.SaveChanges();
|
||||
|
||||
rate.ID = itemToInsert.Id;
|
||||
}
|
||||
|
||||
tx.Commit();
|
||||
|
||||
return rates;
|
||||
}
|
||||
}
|
||||
|
||||
private SqlQuery GetSqlQuery(Exp where)
|
||||
private static CurrencyRate ToCurrencyRate(DbCurrencyRate dbCurrencyRate)
|
||||
{
|
||||
var sqlQuery = Query("crm_currency_rate")
|
||||
.Select("id",
|
||||
"from_currency",
|
||||
"to_currency",
|
||||
"rate");
|
||||
if (dbCurrencyRate == null) return null;
|
||||
|
||||
if (where != null)
|
||||
sqlQuery.Where(where);
|
||||
|
||||
return sqlQuery;
|
||||
}
|
||||
|
||||
private static CurrencyRate ToCurrencyRate(object[] row)
|
||||
return new CurrencyRate
|
||||
{
|
||||
return new CurrencyRate{
|
||||
ID = Convert.ToInt32(row[0]),
|
||||
FromCurrency = Convert.ToString(row[1]),
|
||||
ToCurrency = Convert.ToString(row[2]),
|
||||
Rate = Convert.ToDecimal(row[3])
|
||||
ID = dbCurrencyRate.Id,
|
||||
FromCurrency = dbCurrencyRate.FromCurrency,
|
||||
ToCurrency = dbCurrencyRate.ToCurrency,
|
||||
Rate = dbCurrencyRate.Rate,
|
||||
CreateBy = dbCurrencyRate.CreateBy,
|
||||
CreateOn = dbCurrencyRate.CreateOn,
|
||||
LastModifedBy = dbCurrencyRate.LastModifedBy,
|
||||
LastModifedOn = dbCurrencyRate.LastModifedOn
|
||||
};
|
||||
}
|
||||
}
|
||||
|
@ -100,7 +100,7 @@ namespace ASC.CRM.Core.Dao
|
||||
.InColumnValue("field_id", fieldID)
|
||||
.InColumnValue("entity_type", (int)entityType)
|
||||
.InColumnValue("last_modifed_on", lastModifiedOn)
|
||||
.InColumnValue("last_modifed_by", ASC.Core.SecurityContext.CurrentAccount.ID)
|
||||
.InColumnValue("last_modifed_by", SecurityContext.CurrentAccount.ID)
|
||||
.Identity(1, 0, true)
|
||||
);
|
||||
|
||||
|
@ -24,24 +24,23 @@
|
||||
*/
|
||||
|
||||
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text.RegularExpressions;
|
||||
using System.Globalization;
|
||||
|
||||
using ASC.Collections;
|
||||
using ASC.Common.Data.Sql;
|
||||
using ASC.Common.Data.Sql.Expressions;
|
||||
using ASC.Core;
|
||||
using ASC.Core.Common.EF;
|
||||
using ASC.Core.Tenants;
|
||||
using ASC.CRM.Core.EF;
|
||||
using ASC.CRM.Core.Entities;
|
||||
using ASC.CRM.Core.Enums;
|
||||
using ASC.ElasticSearch;
|
||||
using ASC.Files.Core;
|
||||
using ASC.Web.Files.Api;
|
||||
using ASC.Web.CRM.Core.Search;
|
||||
using ASC.Web.Files.Api;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Globalization;
|
||||
using System.Linq;
|
||||
using System.Text.RegularExpressions;
|
||||
using OrderBy = ASC.CRM.Core.Entities.OrderBy;
|
||||
using ASC.CRM.Core.Enums;
|
||||
|
||||
namespace ASC.CRM.Core.Dao
|
||||
{
|
||||
@ -93,11 +92,21 @@ namespace ASC.CRM.Core.Dao
|
||||
{
|
||||
#region Constructor
|
||||
|
||||
public DealDao(int tenantID)
|
||||
: base(tenantID)
|
||||
public DealDao(DbContextManager<CRMDbContext> dbContextManager,
|
||||
TenantManager tenantManager,
|
||||
SecurityContext securityContext,
|
||||
CRMSecurity cRMSecurity) :
|
||||
base(dbContextManager,
|
||||
tenantManager,
|
||||
securityContext)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
|
||||
public TenantUtil TenantUtil { get; }
|
||||
public CRMSecurity CRMSecurity { get; }
|
||||
|
||||
#endregion
|
||||
|
||||
#region Methods
|
||||
@ -180,9 +189,9 @@ namespace ASC.CRM.Core.Dao
|
||||
.InColumnValue("actual_close_date", TenantUtil.DateTimeToUtc(deal.ActualCloseDate))
|
||||
.InColumnValue("per_period_value", deal.PerPeriodValue)
|
||||
.InColumnValue("create_on", TenantUtil.DateTimeToUtc(deal.CreateOn == DateTime.MinValue ? TenantUtil.DateTimeNow() : deal.CreateOn))
|
||||
.InColumnValue("create_by", ASC.Core.SecurityContext.CurrentAccount.ID)
|
||||
.InColumnValue("create_by", SecurityContext.CurrentAccount.ID)
|
||||
.InColumnValue("last_modifed_on", TenantUtil.DateTimeToUtc(deal.CreateOn == DateTime.MinValue ? TenantUtil.DateTimeNow() : deal.CreateOn))
|
||||
.InColumnValue("last_modifed_by", ASC.Core.SecurityContext.CurrentAccount.ID)
|
||||
.InColumnValue("last_modifed_by", SecurityContext.CurrentAccount.ID)
|
||||
.Identity(1, 0, true));
|
||||
|
||||
// if (deal.ContactID > 0)
|
||||
@ -231,7 +240,7 @@ namespace ASC.CRM.Core.Dao
|
||||
.Set("per_period_value", deal.PerPeriodValue)
|
||||
.Set("actual_close_date", TenantUtil.DateTimeToUtc(deal.ActualCloseDate))
|
||||
.Set("last_modifed_on", TenantUtil.DateTimeToUtc(TenantUtil.DateTimeNow()))
|
||||
.Set("last_modifed_by", ASC.Core.SecurityContext.CurrentAccount.ID)
|
||||
.Set("last_modifed_by", SecurityContext.CurrentAccount.ID)
|
||||
.Where(Exp.Eq("id", deal.ID))
|
||||
);
|
||||
|
||||
@ -885,12 +894,16 @@ namespace ASC.CRM.Core.Dao
|
||||
/// <param name="lastModifedDate"></param>
|
||||
public void SetDealLastModifedDate(int opportunityid, DateTime lastModifedDate)
|
||||
{
|
||||
|
||||
|
||||
Db.ExecuteNonQuery(
|
||||
Update("crm_deal")
|
||||
.Set("last_modifed_on", TenantUtil.DateTimeToUtc(lastModifedDate))
|
||||
.Where(Exp.Eq("id", opportunityid)));
|
||||
|
||||
// Delete relative keys
|
||||
_cache.Remove(new Regex(TenantID.ToString(CultureInfo.InvariantCulture) + "deals.*"));
|
||||
|
||||
}
|
||||
}
|
||||
}
|
@ -27,7 +27,12 @@
|
||||
#region Import
|
||||
|
||||
using ASC.Collections;
|
||||
using ASC.Core;
|
||||
using ASC.Core.Common.EF;
|
||||
using ASC.CRM.Core.EF;
|
||||
using ASC.CRM.Core.Entities;
|
||||
using ASC.CRM.Core.Enums;
|
||||
using ASC.CRM.Resources;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
@ -99,31 +104,48 @@ namespace ASC.CRM.Core.Dao
|
||||
|
||||
#region Constructor
|
||||
|
||||
public DealMilestoneDao(int tenantID)
|
||||
: base(tenantID)
|
||||
public DealMilestoneDao(DbContextManager<CRMDbContext> dbContextManager,
|
||||
TenantManager tenantManager,
|
||||
SecurityContext securityContext) :
|
||||
base(dbContextManager,
|
||||
tenantManager,
|
||||
securityContext)
|
||||
{
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
#endregion
|
||||
|
||||
public virtual void Reorder(int[] ids)
|
||||
{
|
||||
using (var tx = Db.BeginTransaction())
|
||||
{
|
||||
using var tx = CRMDbContext.Database.BeginTransaction();
|
||||
|
||||
for (int index = 0; index < ids.Length; index++)
|
||||
{
|
||||
Query(CRMDbContext.DealMilestones)
|
||||
}
|
||||
|
||||
|
||||
tx.Commit();
|
||||
|
||||
|
||||
throw new NotImplementedException();
|
||||
|
||||
// .Where(x => ids.Contains(x.Id));
|
||||
|
||||
Db.ExecuteNonQuery(Update("crm_deal_milestone")
|
||||
.Set("sort_order", index)
|
||||
.Where(Exp.Eq("id", ids[index])));
|
||||
|
||||
tx.Commit();
|
||||
}
|
||||
}
|
||||
|
||||
public int GetCount()
|
||||
{
|
||||
return Db.ExecuteScalar<int>(Query("crm_deal_milestone").SelectCount());
|
||||
return Query(CRMDbContext.DealMilestones).Count();
|
||||
}
|
||||
|
||||
|
||||
@ -144,12 +166,8 @@ namespace ASC.CRM.Core.Dao
|
||||
|
||||
public int GetRelativeItemsCount(int id)
|
||||
{
|
||||
|
||||
var sqlQuery = Query("crm_deal")
|
||||
.Select("count(*)")
|
||||
.Where(Exp.Eq("deal_milestone_id", id));
|
||||
|
||||
return Db.ExecuteScalar<int>(sqlQuery);
|
||||
return Query(CRMDbContext.Deals)
|
||||
.Count(x => x.DealMilestoneId == id);
|
||||
}
|
||||
|
||||
public virtual int Create(DealMilestone item)
|
||||
@ -186,34 +204,37 @@ namespace ASC.CRM.Core.Dao
|
||||
|
||||
public virtual void ChangeColor(int id, String newColor)
|
||||
{
|
||||
Db.ExecuteNonQuery(Update("crm_deal_milestone")
|
||||
.Set("color", newColor)
|
||||
.Where(Exp.Eq("id", id)));
|
||||
var item = CRMDbContext.DealMilestones.First(x => x.Id == id);
|
||||
|
||||
item.Color = newColor;
|
||||
|
||||
CRMDbContext.SaveChanges();
|
||||
}
|
||||
|
||||
public virtual void Edit(DealMilestone item)
|
||||
{
|
||||
|
||||
if (HaveContactLink(item.ID))
|
||||
throw new ArgumentException(String.Format("{0}. {1}.", CRMErrorsResource.BasicCannotBeEdited, CRMErrorsResource.DealMilestoneHasRelatedDeals));
|
||||
|
||||
Db.ExecuteNonQuery(Update("crm_deal_milestone")
|
||||
.Set("title", item.Title)
|
||||
.Set("description", item.Description)
|
||||
.Set("color", item.Color)
|
||||
.Set("probability", item.Probability)
|
||||
.Set("status", (int)item.Status)
|
||||
.Where(Exp.Eq("id", item.ID)));
|
||||
Query(CRMDbContext.DealMilestones)
|
||||
.First(x => x.Id == item.ID);
|
||||
|
||||
|
||||
//CRMDbContext.DealMilestones.Update();
|
||||
|
||||
//Db.ExecuteNonQuery(Update("crm_deal_milestone")
|
||||
// .Set("title", item.Title)
|
||||
// .Set("description", item.Description)
|
||||
// .Set("color", item.Color)
|
||||
// .Set("probability", item.Probability)
|
||||
// .Set("status", (int)item.Status)
|
||||
// .Where(Exp.Eq("id", item.ID)));
|
||||
}
|
||||
|
||||
public bool HaveContactLink(int dealMilestoneID)
|
||||
{
|
||||
SqlQuery sqlQuery = Query("crm_deal")
|
||||
.Where(Exp.Eq("deal_milestone_id", dealMilestoneID))
|
||||
.SelectCount()
|
||||
.SetMaxResults(1);
|
||||
|
||||
return Db.ExecuteScalar<int>(sqlQuery) >= 1;
|
||||
return Query(CRMDbContext.Deals)
|
||||
.Any(x => x.DealMilestoneId == dealMilestoneID);
|
||||
}
|
||||
|
||||
public virtual void Delete(int id)
|
||||
@ -221,69 +242,78 @@ namespace ASC.CRM.Core.Dao
|
||||
if (HaveContactLink(id))
|
||||
throw new ArgumentException(String.Format("{0}. {1}.", CRMErrorsResource.BasicCannotBeDeleted, CRMErrorsResource.DealMilestoneHasRelatedDeals));
|
||||
|
||||
Db.ExecuteNonQuery(Delete("crm_deal_milestone").Where(Exp.Eq("id", id)));
|
||||
var item = CRMDbContext.DealMilestones.First(x => x.Id == id);
|
||||
|
||||
CRMDbContext.DealMilestones.Remove(item);
|
||||
|
||||
CRMDbContext.SaveChanges();
|
||||
|
||||
}
|
||||
|
||||
public virtual DealMilestone GetByID(int id)
|
||||
{
|
||||
var dealMilestones = Db.ExecuteList(GetDealMilestoneQuery(Exp.Eq("id", id))).ConvertAll(row => ToDealMilestone(row));
|
||||
|
||||
if (dealMilestones.Count == 0)
|
||||
return null;
|
||||
//var dealMilestones = Db.ExecuteList(GetDealMilestoneQuery(Exp.Eq("id", id))).ConvertAll(row => ToDealMilestone(row));
|
||||
|
||||
return dealMilestones[0];
|
||||
//if (dealMilestones.Count == 0)
|
||||
// return null;
|
||||
|
||||
//return dealMilestones[0];
|
||||
}
|
||||
|
||||
public Boolean IsExist(int id)
|
||||
{
|
||||
return Db.ExecuteScalar<bool>("select exists(select 1 from crm_deal_milestone where tenant_id = @tid and id = @id)",
|
||||
new { tid = TenantID, id = id });
|
||||
return Query(CRMDbContext.DealMilestones).Any(x => x.Id == id);
|
||||
}
|
||||
|
||||
public List<DealMilestone> GetAll(int[] id)
|
||||
{
|
||||
return Db.ExecuteList(GetDealMilestoneQuery(Exp.In("id", id))).ConvertAll(row => ToDealMilestone(row));
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
// return Db.ExecuteList(GetDealMilestoneQuery(Exp.In("id", id))).ConvertAll(row => ToDealMilestone(row));
|
||||
}
|
||||
|
||||
public List<DealMilestone> GetAll()
|
||||
{
|
||||
return Db.ExecuteList(GetDealMilestoneQuery(null)).ConvertAll(row => ToDealMilestone(row));
|
||||
|
||||
|
||||
// return Db.ExecuteList(GetDealMilestoneQuery(null)).ConvertAll(row => ToDealMilestone(row));
|
||||
}
|
||||
|
||||
private SqlQuery GetDealMilestoneQuery(Exp where)
|
||||
{
|
||||
SqlQuery sqlQuery = Query("crm_deal_milestone")
|
||||
.Select("id",
|
||||
"title",
|
||||
"description",
|
||||
"color",
|
||||
"probability",
|
||||
"status",
|
||||
"sort_order")
|
||||
.OrderBy("sort_order", true);
|
||||
//private SqlQuery GetDealMilestoneQuery(Exp where)
|
||||
//{
|
||||
// SqlQuery sqlQuery = Query("crm_deal_milestone")
|
||||
// .Select("id",
|
||||
// "title",
|
||||
// "description",
|
||||
// "color",
|
||||
// "probability",
|
||||
// "status",
|
||||
// "sort_order")
|
||||
// .OrderBy("sort_order", true);
|
||||
|
||||
if (where != null)
|
||||
sqlQuery.Where(where);
|
||||
// if (where != null)
|
||||
// sqlQuery.Where(where);
|
||||
|
||||
return sqlQuery;
|
||||
// return sqlQuery;
|
||||
|
||||
}
|
||||
//}
|
||||
|
||||
private static DealMilestone ToDealMilestone(object[] row)
|
||||
private static DealMilestone ToDealMilestone(DbDealMilestone dbDealMilestone)
|
||||
{
|
||||
return new DealMilestone
|
||||
{
|
||||
ID = Convert.ToInt32(row[0]),
|
||||
Title = Convert.ToString(row[1]),
|
||||
Description = Convert.ToString(row[2]),
|
||||
Color = Convert.ToString(row[3]),
|
||||
Probability = Convert.ToInt32(row[4]),
|
||||
Status = (DealMilestoneStatus)Convert.ToInt32(row[5]),
|
||||
SortOrder = Convert.ToInt32(row[6])
|
||||
ID = dbDealMilestone.Id,
|
||||
Title = dbDealMilestone.Title,
|
||||
Color = dbDealMilestone.Color,
|
||||
Status = dbDealMilestone.Status,
|
||||
Description = dbDealMilestone.Description,
|
||||
Probability = dbDealMilestone.Probability,
|
||||
SortOrder = dbDealMilestone.SortOrder
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
}
|
@ -28,6 +28,8 @@ using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using ASC.Core;
|
||||
using ASC.Core.Common.EF;
|
||||
using ASC.CRM.Core.EF;
|
||||
using ASC.Files.Core;
|
||||
using ASC.Web.Files.Api;
|
||||
|
||||
@ -35,29 +37,34 @@ namespace ASC.CRM.Core.Dao
|
||||
{
|
||||
public class FileDao : AbstractDao
|
||||
{
|
||||
public FileDao(int tenantID)
|
||||
: base(tenantID)
|
||||
public FileDao(FilesIntegration filesIntegration,
|
||||
DbContextManager<CRMDbContext> dbContextManager,
|
||||
TenantManager tenantManager,
|
||||
SecurityContext securityContext):
|
||||
base(dbContextManager,
|
||||
tenantManager,
|
||||
securityContext)
|
||||
{
|
||||
FilesIntegration = filesIntegration;
|
||||
}
|
||||
|
||||
#region Public Methods
|
||||
public FilesIntegration FilesIntegration { get; }
|
||||
|
||||
public File GetFile(int id, int version)
|
||||
{
|
||||
using (var dao = FilesIntegration.GetFileDao())
|
||||
{
|
||||
var dao = FilesIntegration.GetFileDao();
|
||||
|
||||
var file = 0 < version ? dao.GetFile(id, version) : dao.GetFile(id);
|
||||
|
||||
return file;
|
||||
}
|
||||
}
|
||||
|
||||
public void DeleteFile(int id)
|
||||
{
|
||||
using (var dao = FilesIntegration.GetFileDao())
|
||||
{
|
||||
var dao = FilesIntegration.GetFileDao();
|
||||
|
||||
dao.DeleteFile(id);
|
||||
}
|
||||
}
|
||||
|
||||
public object GetRoot()
|
||||
{
|
||||
@ -71,21 +78,18 @@ namespace ASC.CRM.Core.Dao
|
||||
|
||||
public File SaveFile(File file, System.IO.Stream stream)
|
||||
{
|
||||
using (var dao = FilesIntegration.GetFileDao())
|
||||
{
|
||||
var dao = FilesIntegration.GetFileDao();
|
||||
|
||||
return dao.SaveFile(file, stream);
|
||||
}
|
||||
}
|
||||
|
||||
public List<int> GetEventsByFile(int id)
|
||||
{
|
||||
using (var tagdao = FilesIntegration.GetTagDao())
|
||||
{
|
||||
var tagdao = FilesIntegration.GetTagDao();
|
||||
var tags = tagdao.GetTags(id, FileEntryType.File, TagType.System).ToList().FindAll(tag => tag.TagName.StartsWith("RelationshipEvent_"));
|
||||
|
||||
return tags.Select(item => Convert.ToInt32(item.TagName.Split(new[] { '_' })[1])).ToList();
|
||||
}
|
||||
}
|
||||
|
||||
#endregion
|
||||
}
|
||||
}
|
@ -32,8 +32,12 @@ using System.Text.RegularExpressions;
|
||||
using ASC.Collections;
|
||||
using ASC.Common.Data.Sql;
|
||||
using ASC.Common.Data.Sql.Expressions;
|
||||
using ASC.Core;
|
||||
using ASC.Core.Common.EF;
|
||||
using ASC.Core.Tenants;
|
||||
using ASC.CRM.Core.EF;
|
||||
using ASC.CRM.Core.Entities;
|
||||
using ASC.CRM.Core.Enums;
|
||||
using ASC.ElasticSearch;
|
||||
using ASC.Web.CRM.Classes;
|
||||
using ASC.Web.CRM.Core.Search;
|
||||
@ -93,11 +97,18 @@ namespace ASC.CRM.Core.Dao
|
||||
new KeyValuePair<InvoiceStatus, InvoiceStatus>(InvoiceStatus.Paid, InvoiceStatus.Sent)//Bug 23450
|
||||
};
|
||||
|
||||
public InvoiceDao(int tenantID)
|
||||
: base(tenantID)
|
||||
public InvoiceDao(DbContextManager<CRMDbContext> dbContextManager,
|
||||
TenantManager tenantManager,
|
||||
SecurityContext securityContext)
|
||||
: base(dbContextManager,
|
||||
tenantManager,
|
||||
securityContext)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
public CRMSecurity CRMSecurity { get; }
|
||||
|
||||
public Boolean IsExist(int invoiceID)
|
||||
{
|
||||
return IsExistFromDb(invoiceID);
|
||||
@ -106,6 +117,7 @@ namespace ASC.CRM.Core.Dao
|
||||
|
||||
public Boolean IsExistFromDb(int invoiceID)
|
||||
{
|
||||
|
||||
return Db.ExecuteScalar<bool>(@"select exists(select 1 from crm_invoice where tenant_id = @tid and id = @id)",
|
||||
new { tid = TenantID, id = invoiceID });
|
||||
}
|
||||
@ -124,8 +136,6 @@ namespace ASC.CRM.Core.Dao
|
||||
return Db.ExecuteScalar<int>(q) > 0;
|
||||
}
|
||||
|
||||
#region Get
|
||||
|
||||
public virtual List<Invoice> GetAll()
|
||||
{
|
||||
return Db.ExecuteList(GetInvoiceSqlQuery(null, null)).ConvertAll(ToInvoice);
|
||||
@ -454,10 +464,6 @@ namespace ASC.CRM.Core.Dao
|
||||
return Global.TenantSettings.InvoiceSetting ?? InvoiceSetting.DefaultSettings;
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region SaveOrUpdate
|
||||
|
||||
public virtual int SaveOrUpdateInvoice(Invoice invoice)
|
||||
{
|
||||
_cache.Remove(new Regex(TenantID.ToString(CultureInfo.InvariantCulture) + "invoice.*"));
|
||||
@ -664,11 +670,6 @@ namespace ASC.CRM.Core.Dao
|
||||
return tenantSettings.InvoiceSetting;
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region Delete
|
||||
|
||||
|
||||
public virtual Invoice DeleteInvoice(int invoiceID)
|
||||
{
|
||||
if (invoiceID <= 0) return null;
|
||||
@ -714,10 +715,6 @@ namespace ASC.CRM.Core.Dao
|
||||
invoices.ForEach(invoice => FactoryIndexer<InvoicesWrapper>.DeleteAsync(invoice));
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region Private Methods
|
||||
|
||||
private static Invoice ToInvoice(object[] row)
|
||||
{
|
||||
return new Invoice
|
||||
|
@ -24,19 +24,18 @@
|
||||
*/
|
||||
|
||||
|
||||
using ASC.Collections;
|
||||
using ASC.Core;
|
||||
using ASC.Core.Common.EF;
|
||||
using ASC.Core.Tenants;
|
||||
using ASC.CRM.Core.EF;
|
||||
using ASC.CRM.Core.Entities;
|
||||
using ASC.CRM.Core.Enums;
|
||||
using ASC.Web.CRM.Classes;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Globalization;
|
||||
using System.Linq;
|
||||
using System.Web.Caching;
|
||||
using ASC.Collections;
|
||||
using ASC.Common.Data;
|
||||
using ASC.Common.Data.Sql;
|
||||
using ASC.Common.Data.Sql.Expressions;
|
||||
using ASC.Core;
|
||||
using ASC.Core.Tenants;
|
||||
using ASC.CRM.Core.Entities;
|
||||
using ASC.Web.CRM.Classes;
|
||||
|
||||
namespace ASC.CRM.Core.Dao
|
||||
{
|
||||
@ -44,8 +43,17 @@ namespace ASC.CRM.Core.Dao
|
||||
{
|
||||
private readonly HttpRequestDictionary<InvoiceItem> _invoiceItemCache = new HttpRequestDictionary<InvoiceItem>("crm_invoice_item");
|
||||
|
||||
public CachedInvoiceItemDao(int tenantID)
|
||||
: base(tenantID)
|
||||
public CachedInvoiceItemDao(DbContextManager<CRMDbContext> dbContextManager,
|
||||
TenantManager tenantManager,
|
||||
SecurityContext securityContext,
|
||||
TenantUtil tenantUtil,
|
||||
CRMSecurity cRMSecurity
|
||||
) : base(dbContextManager,
|
||||
tenantManager,
|
||||
securityContext,
|
||||
tenantUtil,
|
||||
cRMSecurity)
|
||||
|
||||
{
|
||||
}
|
||||
|
||||
@ -82,11 +90,23 @@ namespace ASC.CRM.Core.Dao
|
||||
|
||||
public class InvoiceItemDao : AbstractDao
|
||||
{
|
||||
public InvoiceItemDao(int tenantID)
|
||||
: base(tenantID)
|
||||
public InvoiceItemDao(
|
||||
DbContextManager<CRMDbContext> dbContextManager,
|
||||
TenantManager tenantManager,
|
||||
SecurityContext securityContext,
|
||||
TenantUtil tenantUtil,
|
||||
CRMSecurity cRMSecurity
|
||||
) : base(dbContextManager,
|
||||
tenantManager,
|
||||
securityContext)
|
||||
{
|
||||
TenantUtil = tenantUtil;
|
||||
CRMSecurity = cRMSecurity;
|
||||
}
|
||||
|
||||
public CRMSecurity CRMSecurity { get; }
|
||||
|
||||
public TenantUtil TenantUtil { get; }
|
||||
|
||||
public Boolean IsExist(int invoiceItemID)
|
||||
{
|
||||
@ -95,18 +115,14 @@ namespace ASC.CRM.Core.Dao
|
||||
|
||||
public Boolean IsExistInDb(int invoiceItemID)
|
||||
{
|
||||
return Db.ExecuteScalar<bool>(@"select exists(select 1 from crm_invoice_item where tenant_id = @tid and id = @id)",
|
||||
new { tid = TenantID, id = invoiceItemID });
|
||||
return Query(CRMDbContext.InvoiceItem).Any(x => x.Id == invoiceItemID);
|
||||
}
|
||||
|
||||
public Boolean CanDelete(int invoiceItemID)
|
||||
{
|
||||
return Db.ExecuteScalar<int>(@"select count(*) from crm_invoice_line where tenant_id = @tid and invoice_item_id = @id",
|
||||
new { tid = TenantID, id = invoiceItemID }) == 0;
|
||||
return Query(CRMDbContext.InvoiceLine).Any(x => x.InvoiceItemId == invoiceItemID);
|
||||
}
|
||||
|
||||
#region Get
|
||||
|
||||
public virtual List<InvoiceItem> GetAll()
|
||||
{
|
||||
return GetAllInDb();
|
||||
@ -249,11 +265,6 @@ namespace ASC.CRM.Core.Dao
|
||||
return result;
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
|
||||
#region SaveOrUpdate
|
||||
|
||||
public virtual InvoiceItem SaveOrUpdateInvoiceItem(InvoiceItem invoiceItem)
|
||||
{
|
||||
/*_cache.Remove(_invoiceItemCacheKey);
|
||||
@ -336,11 +347,6 @@ namespace ASC.CRM.Core.Dao
|
||||
return invoiceItem;
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
|
||||
#region Delete
|
||||
|
||||
public virtual InvoiceItem DeleteInvoiceItem(int invoiceItemID)
|
||||
{
|
||||
var invoiceItem = GetByID(invoiceItemID);
|
||||
@ -348,7 +354,10 @@ namespace ASC.CRM.Core.Dao
|
||||
|
||||
CRMSecurity.DemandDelete(invoiceItem);
|
||||
|
||||
Db.ExecuteNonQuery(Delete("crm_invoice_item").Where("id", invoiceItemID));
|
||||
|
||||
|
||||
|
||||
// Db.ExecuteNonQuery(Delete("crm_invoice_item").Where("id", invoiceItemID));
|
||||
|
||||
/*_cache.Remove(_invoiceItemCacheKey);
|
||||
_cache.Insert(_invoiceItemCacheKey, String.Empty);*/
|
||||
@ -372,11 +381,6 @@ namespace ASC.CRM.Core.Dao
|
||||
return items;
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
|
||||
#region Private Methods
|
||||
|
||||
private void DeleteBatchItemsExecute(List<InvoiceItem> items)
|
||||
{
|
||||
var ids = items.Select(x => x.ID).ToArray();
|
||||
@ -388,25 +392,45 @@ namespace ASC.CRM.Core.Dao
|
||||
//}
|
||||
}
|
||||
|
||||
private static InvoiceItem ToInvoiceItem(object[] row)
|
||||
private InvoiceItem ToInvoiceItem(DbInvoiceItem dbInvoiceItem)
|
||||
{
|
||||
return new InvoiceItem
|
||||
{
|
||||
ID = Convert.ToInt32(row[0]),
|
||||
Title = Convert.ToString(row[1]),
|
||||
Description = Convert.ToString(row[2]),
|
||||
StockKeepingUnit = Convert.ToString(row[3]),
|
||||
Price = Convert.ToDecimal(row[4]),
|
||||
StockQuantity = Convert.ToDecimal(row[5]),
|
||||
TrackInventory = Convert.ToBoolean(row[6]),
|
||||
InvoiceTax1ID = Convert.ToInt32(row[7]),
|
||||
InvoiceTax2ID = Convert.ToInt32(row[8]),
|
||||
Currency = Convert.ToString(row[9]),
|
||||
CreateOn = TenantUtil.DateTimeFromUtc(DateTime.Parse(row[10].ToString())),
|
||||
CreateBy = ToGuid(row[11]),
|
||||
LastModifedOn = TenantUtil.DateTimeFromUtc(DateTime.Parse(row[12].ToString())),
|
||||
LastModifedBy = ToGuid(row[13])
|
||||
ID = dbInvoiceItem.Id,
|
||||
Title = dbInvoiceItem.Title,
|
||||
Description = dbInvoiceItem.Description,
|
||||
StockKeepingUnit = dbInvoiceItem.StockKeepingUnit,
|
||||
Price = dbInvoiceItem.Price,
|
||||
StockQuantity = dbInvoiceItem.StockQuantity,
|
||||
TrackInventory = dbInvoiceItem.TrackInventory,
|
||||
InvoiceTax1ID = dbInvoiceItem.InvoiceTax1Id,
|
||||
InvoiceTax2ID = dbInvoiceItem.InvoiceTax2Id,
|
||||
Currency = dbInvoiceItem.Currency,
|
||||
CreateOn = TenantUtil.DateTimeFromUtc(dbInvoiceItem.CreateOn),
|
||||
CreateBy = dbInvoiceItem.CreateBy,
|
||||
LastModifedOn = TenantUtil.DateTimeFromUtc(dbInvoiceItem.LastModifedOn),
|
||||
LastModifedBy = dbInvoiceItem.LastModifedBy
|
||||
};
|
||||
|
||||
|
||||
|
||||
//return new InvoiceItem
|
||||
// {
|
||||
// ID = Convert.ToInt32(row[0]),
|
||||
// Title = Convert.ToString(row[1]),
|
||||
// Description = Convert.ToString(row[2]),
|
||||
// StockKeepingUnit = Convert.ToString(row[3]),
|
||||
// Price = Convert.ToDecimal(row[4]),
|
||||
// StockQuantity = Convert.ToDecimal(row[5]),
|
||||
// TrackInventory = Convert.ToBoolean(row[6]),
|
||||
// InvoiceTax1ID = Convert.ToInt32(row[7]),
|
||||
// InvoiceTax2ID = Convert.ToInt32(row[8]),
|
||||
// Currency = Convert.ToString(row[9]),
|
||||
// CreateOn = TenantUtil.DateTimeFromUtc(DateTime.Parse(row[10].ToString())),
|
||||
// CreateBy = ToGuid(row[11]),
|
||||
// LastModifedOn = TenantUtil.DateTimeFromUtc(DateTime.Parse(row[12].ToString())),
|
||||
// LastModifedBy = ToGuid(row[13])
|
||||
// };
|
||||
}
|
||||
|
||||
private SqlQuery GetInvoiceItemSqlQuery(Exp where)
|
||||
@ -485,6 +509,5 @@ namespace ASC.CRM.Core.Dao
|
||||
return conditions.Count == 1 ? conditions[0] : conditions.Aggregate((i, j) => i & j);
|
||||
}
|
||||
|
||||
#endregion
|
||||
}
|
||||
}
|
@ -24,17 +24,16 @@
|
||||
*/
|
||||
|
||||
|
||||
using ASC.Collections;
|
||||
using ASC.Core;
|
||||
using ASC.Core.Common.EF;
|
||||
using ASC.CRM.Core.EF;
|
||||
using ASC.CRM.Core.Entities;
|
||||
using Newtonsoft.Json;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Globalization;
|
||||
using System.Linq;
|
||||
using ASC.Collections;
|
||||
using ASC.Common.Data;
|
||||
using ASC.Common.Data.Sql;
|
||||
using ASC.Common.Data.Sql.Expressions;
|
||||
using ASC.CRM.Core.Entities;
|
||||
using Newtonsoft.Json;
|
||||
using Newtonsoft.Json.Linq;
|
||||
using System.Text.RegularExpressions;
|
||||
|
||||
namespace ASC.CRM.Core.Dao
|
||||
@ -43,8 +42,12 @@ namespace ASC.CRM.Core.Dao
|
||||
{
|
||||
private readonly HttpRequestDictionary<InvoiceLine> _invoiceLineCache = new HttpRequestDictionary<InvoiceLine>("crm_invoice_line");
|
||||
|
||||
public CachedInvoiceLineDao(int tenantID)
|
||||
: base(tenantID)
|
||||
public CachedInvoiceLineDao(DbContextManager<CRMDbContext> dbContextManager,
|
||||
TenantManager tenantManager,
|
||||
SecurityContext securityContext)
|
||||
: base(dbContextManager,
|
||||
tenantManager,
|
||||
securityContext)
|
||||
{
|
||||
}
|
||||
|
||||
@ -81,9 +84,14 @@ namespace ASC.CRM.Core.Dao
|
||||
|
||||
public class InvoiceLineDao : AbstractDao
|
||||
{
|
||||
public InvoiceLineDao(int tenantID)
|
||||
: base(tenantID)
|
||||
public InvoiceLineDao(DbContextManager<CRMDbContext> dbContextManager,
|
||||
TenantManager tenantManager,
|
||||
SecurityContext securityContext)
|
||||
: base(dbContextManager,
|
||||
tenantManager,
|
||||
securityContext)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
|
||||
@ -109,23 +117,22 @@ namespace ASC.CRM.Core.Dao
|
||||
});
|
||||
}
|
||||
|
||||
#region Get
|
||||
|
||||
public virtual List<InvoiceLine> GetAll()
|
||||
{
|
||||
return Db.ExecuteList(GetInvoiceLineSqlQuery(null)).ConvertAll(ToInvoiceLine);
|
||||
return Query(CRMDbContext.InvoiceLine)
|
||||
.ToList()
|
||||
.ConvertAll(ToInvoiceLine);
|
||||
}
|
||||
|
||||
public virtual List<InvoiceLine> GetByID(int[] ids)
|
||||
{
|
||||
return Db.ExecuteList(GetInvoiceLineSqlQuery(Exp.In("id", ids))).ConvertAll(ToInvoiceLine);
|
||||
return Query(CRMDbContext.InvoiceLine).Where(x => ids.Contains(x.Id)).ToList()
|
||||
.ConvertAll(ToInvoiceLine);
|
||||
}
|
||||
|
||||
public virtual InvoiceLine GetByID(int id)
|
||||
{
|
||||
var invoiceLines = Db.ExecuteList(GetInvoiceLineSqlQuery(Exp.Eq("id", id))).ConvertAll(ToInvoiceLine);
|
||||
|
||||
return invoiceLines.Count > 0 ? invoiceLines[0] : null;
|
||||
return ToInvoiceLine(Query(CRMDbContext.InvoiceLine).FirstOrDefault(x => x.Id == id));
|
||||
}
|
||||
|
||||
public List<InvoiceLine> GetInvoiceLines(int invoiceID)
|
||||
@ -135,14 +142,13 @@ namespace ASC.CRM.Core.Dao
|
||||
|
||||
public List<InvoiceLine> GetInvoiceLinesInDb(int invoiceID)
|
||||
{
|
||||
return Db.ExecuteList(GetInvoiceLineSqlQuery(Exp.Eq("invoice_id", invoiceID)).OrderBy("sort_order", true)).ConvertAll(ToInvoiceLine);
|
||||
return Query(CRMDbContext.InvoiceLine)
|
||||
.Where(x => x.InvoiceId == invoiceID)
|
||||
.OrderBy(x => x.SortOrder)
|
||||
.ToList()
|
||||
.ConvertAll(ToInvoiceLine);
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
|
||||
#region SaveOrUpdate
|
||||
|
||||
public virtual int SaveOrUpdateInvoiceLine(InvoiceLine invoiceLine)
|
||||
{
|
||||
_cache.Remove(new Regex(TenantID.ToString(CultureInfo.InvariantCulture) + "invoice.*"));
|
||||
@ -160,6 +166,7 @@ namespace ASC.CRM.Core.Dao
|
||||
invoiceLine.Description = String.Empty;
|
||||
}
|
||||
|
||||
|
||||
if (Db.ExecuteScalar<int>(Query("crm_invoice_line").SelectCount().Where(Exp.Eq("id", invoiceLine.ID))) == 0)
|
||||
{
|
||||
invoiceLine.ID = Db.ExecuteScalar<int>(
|
||||
@ -195,18 +202,17 @@ namespace ASC.CRM.Core.Dao
|
||||
return invoiceLine.ID;
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
|
||||
#region Delete
|
||||
|
||||
public virtual void DeleteInvoiceLine(int invoiceLineID)
|
||||
{
|
||||
var invoiceLine = GetByID(invoiceLineID);
|
||||
|
||||
if (invoiceLine == null) return;
|
||||
|
||||
Db.ExecuteNonQuery(Delete("crm_invoice_line").Where("id", invoiceLineID));
|
||||
var itemToDelete = new DbInvoiceLine { Id = invoiceLineID };
|
||||
|
||||
CRMDbContext.Attach(itemToDelete);
|
||||
CRMDbContext.Remove(itemToDelete);
|
||||
CRMDbContext.SaveChanges();
|
||||
|
||||
/*_cache.Remove(_invoiceItemCacheKey);
|
||||
_cache.Insert(_invoiceLineCacheKey, String.Empty);*/
|
||||
@ -214,7 +220,10 @@ namespace ASC.CRM.Core.Dao
|
||||
|
||||
public void DeleteInvoiceLines(int invoiceID)
|
||||
{
|
||||
Db.ExecuteNonQuery(Delete("crm_invoice_line").Where(Exp.Eq("invoice_id", invoiceID)));
|
||||
var itemToDelete = Query(CRMDbContext.InvoiceLine).Where(x => x.InvoiceId == invoiceID);
|
||||
|
||||
CRMDbContext.RemoveRange(itemToDelete);
|
||||
CRMDbContext.SaveChanges();
|
||||
|
||||
/*_cache.Remove(_invoiceItemCacheKey);
|
||||
_cache.Insert(_invoiceLineCacheKey, String.Empty);*/
|
||||
@ -227,63 +236,32 @@ namespace ASC.CRM.Core.Dao
|
||||
|
||||
public Boolean CanDeleteInDb(int invoiceLineID)
|
||||
{
|
||||
var invoiceID = Query(CRMDbContext.InvoiceLine)
|
||||
.Where(x => x.Id == invoiceLineID)
|
||||
.Select(x => x.InvoiceId);
|
||||
|
||||
var invoiceID = Db.ExecuteScalar<int>(Query("crm_invoice_line").Select("invoice_id")
|
||||
.Where(Exp.Eq("id", invoiceLineID)));
|
||||
if (!invoiceID.Any()) return false;
|
||||
|
||||
if (invoiceID == 0) return false;
|
||||
|
||||
var count = Db.ExecuteScalar<int>(Query("crm_invoice_line").SelectCount()
|
||||
.Where(Exp.Eq("invoice_id", invoiceID)));
|
||||
|
||||
return count > 1;
|
||||
return Query(CRMDbContext.InvoiceLine).Where(x => x.InvoiceId == invoiceLineID).Any();
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
|
||||
#region Private Methods
|
||||
|
||||
private static InvoiceLine ToInvoiceLine(object[] row)
|
||||
private InvoiceLine ToInvoiceLine(DbInvoiceLine dbInvoiceLine)
|
||||
{
|
||||
if (dbInvoiceLine == null) return null;
|
||||
|
||||
return new InvoiceLine
|
||||
{
|
||||
ID = Convert.ToInt32(row[0]),
|
||||
InvoiceID = Convert.ToInt32(row[1]),
|
||||
InvoiceItemID = Convert.ToInt32(row[2]),
|
||||
InvoiceTax1ID = Convert.ToInt32(row[3]),
|
||||
InvoiceTax2ID = Convert.ToInt32(row[4]),
|
||||
SortOrder = Convert.ToInt32(row[5]),
|
||||
Description = Convert.ToString(row[6]),
|
||||
Quantity = Convert.ToDecimal(row[7]),
|
||||
Price = Convert.ToDecimal(row[8]),
|
||||
Discount = Convert.ToDecimal(row[9])
|
||||
ID = dbInvoiceLine.Id,
|
||||
InvoiceID = dbInvoiceLine.InvoiceId,
|
||||
InvoiceItemID = dbInvoiceLine.InvoiceItemId,
|
||||
InvoiceTax1ID = dbInvoiceLine.InvoiceTax1Id,
|
||||
InvoiceTax2ID = dbInvoiceLine.InvoiceTax2Id,
|
||||
SortOrder = dbInvoiceLine.SortOrder,
|
||||
Description = dbInvoiceLine.Description,
|
||||
Quantity = dbInvoiceLine.Quantity,
|
||||
Price = dbInvoiceLine.Price,
|
||||
Discount = dbInvoiceLine.Discount
|
||||
};
|
||||
}
|
||||
|
||||
private SqlQuery GetInvoiceLineSqlQuery(Exp where)
|
||||
{
|
||||
var sqlQuery = Query("crm_invoice_line")
|
||||
.Select(
|
||||
"id",
|
||||
"invoice_id",
|
||||
"invoice_item_id",
|
||||
"invoice_tax1_id",
|
||||
"invoice_tax2_id",
|
||||
"sort_order",
|
||||
"description",
|
||||
"quantity",
|
||||
"price",
|
||||
"discount");
|
||||
|
||||
if (where != null)
|
||||
{
|
||||
sqlQuery.Where(where);
|
||||
}
|
||||
|
||||
return sqlQuery;
|
||||
}
|
||||
|
||||
#endregion
|
||||
}
|
||||
}
|
@ -24,17 +24,16 @@
|
||||
*/
|
||||
|
||||
|
||||
using ASC.Collections;
|
||||
using ASC.Core;
|
||||
using ASC.Core.Common.EF;
|
||||
using ASC.Core.Tenants;
|
||||
using ASC.CRM.Core.EF;
|
||||
using ASC.CRM.Core.Entities;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Globalization;
|
||||
using System.Linq;
|
||||
using ASC.Collections;
|
||||
using ASC.Common.Data;
|
||||
using ASC.Common.Data.Sql;
|
||||
using ASC.Common.Data.Sql.Expressions;
|
||||
using ASC.Core;
|
||||
using ASC.Core.Tenants;
|
||||
using ASC.CRM.Core.Entities;
|
||||
|
||||
namespace ASC.CRM.Core.Dao
|
||||
{
|
||||
@ -80,68 +79,67 @@ namespace ASC.CRM.Core.Dao
|
||||
|
||||
public class InvoiceTaxDao : AbstractDao
|
||||
{
|
||||
public InvoiceTaxDao(int tenantID)
|
||||
: base(tenantID)
|
||||
public InvoiceTaxDao(
|
||||
DbContextManager<CRMDbContext> dbContextManager,
|
||||
TenantManager tenantManager,
|
||||
SecurityContext securityContext
|
||||
)
|
||||
: base(dbContextManager,
|
||||
tenantManager,
|
||||
securityContext)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
public TenantUtil TenantUtil { get; }
|
||||
public CRMSecurity CRMSecurity { get; }
|
||||
|
||||
public Boolean IsExist(int invoiceTaxID)
|
||||
{
|
||||
return Db.ExecuteScalar<bool>(
|
||||
@"select exists(select 1 from crm_invoice_tax where tenant_id = @tid and id = @id)",
|
||||
new {tid = TenantID, id = invoiceTaxID});
|
||||
return CRMDbContext.InvoiceTax.Where(x => x.Id == invoiceTaxID).Any();
|
||||
}
|
||||
|
||||
public Boolean IsExist(String invoiceName)
|
||||
{
|
||||
var q = new SqlQuery("crm_invoice_tax")
|
||||
.Select("1")
|
||||
.Where("tenant_id", TenantID)
|
||||
.Where("name", invoiceName)
|
||||
.SetMaxResults(1);
|
||||
|
||||
return Db.ExecuteScalar<bool>(q);
|
||||
return Query(CRMDbContext.InvoiceTax).Where(x => String.Compare(x.Name, invoiceName, true) == 0).Any();
|
||||
}
|
||||
|
||||
public Boolean CanDelete(int invoiceTaxID)
|
||||
{
|
||||
var count1 = Db.ExecuteScalar<int>(@"select count(*) from crm_invoice_item where tenant_id = @tid and (invoice_tax1_id = @id or invoice_tax2_id = @id)",
|
||||
new { tid = TenantID, id = invoiceTaxID });
|
||||
var count2 = Db.ExecuteScalar<int>(@"select count(*) from crm_invoice_line where tenant_id = @tid and (invoice_tax1_id = @id or invoice_tax2_id = @id)",
|
||||
new { tid = TenantID, id = invoiceTaxID });
|
||||
|
||||
return count1 == 0 && count2 == 0;
|
||||
return !Query(CRMDbContext.InvoiceItem)
|
||||
.Where(x => x.InvoiceTax1Id == invoiceTaxID || x.InvoiceTax2Id == invoiceTaxID).Any() &&
|
||||
!Query(CRMDbContext.InvoiceLine)
|
||||
.Where(x => x.InvoiceTax1Id == invoiceTaxID || x.InvoiceTax2Id == invoiceTaxID).Any();
|
||||
}
|
||||
|
||||
#region Get
|
||||
|
||||
public virtual List<InvoiceTax> GetAll()
|
||||
{
|
||||
return Db.ExecuteList(GetInvoiceTaxSqlQuery(null)).ConvertAll(ToInvoiceTax);
|
||||
return Query(CRMDbContext.InvoiceTax)
|
||||
.ToList()
|
||||
.ConvertAll(ToInvoiceTax);
|
||||
}
|
||||
|
||||
public DateTime GetMaxLastModified()
|
||||
{
|
||||
return Db.ExecuteScalar<DateTime>(Query("crm_invoice_tax").Select("last_modifed_on"));
|
||||
throw new NotImplementedException();
|
||||
|
||||
// return Query(CRMDbContext.InvoiceItem).Select(x => x.la)
|
||||
// return Db.ExecuteScalar<DateTime>(Query("crm_invoice_tax").Select("last_modifed_on"));
|
||||
}
|
||||
|
||||
public virtual List<InvoiceTax> GetByID(int[] ids)
|
||||
{
|
||||
return Db.ExecuteList(GetInvoiceTaxSqlQuery(Exp.In("id", ids))).ConvertAll(ToInvoiceTax);
|
||||
return Query(CRMDbContext.InvoiceTax)
|
||||
.Where(x => ids.Contains(x.Id))
|
||||
.ToList()
|
||||
.ConvertAll(ToInvoiceTax);
|
||||
}
|
||||
|
||||
public virtual InvoiceTax GetByID(int id)
|
||||
{
|
||||
var invoiceTaxes = Db.ExecuteList(GetInvoiceTaxSqlQuery(Exp.Eq("id", id))).ConvertAll(ToInvoiceTax);
|
||||
|
||||
return invoiceTaxes.Count > 0 ? invoiceTaxes[0] : null;
|
||||
return ToInvoiceTax(CRMDbContext.InvoiceTax.FirstOrDefault(x => x.Id == id));
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region SaveOrUpdate
|
||||
|
||||
public virtual InvoiceTax SaveOrUpdateInvoiceTax(InvoiceTax invoiceTax)
|
||||
{
|
||||
/*_cache.Remove(_invoiceItemCacheKey);
|
||||
@ -158,31 +156,55 @@ namespace ASC.CRM.Core.Dao
|
||||
invoiceTax.LastModifedBy = SecurityContext.CurrentAccount.ID;
|
||||
invoiceTax.LastModifedOn = DateTime.UtcNow;
|
||||
|
||||
if (Db.ExecuteScalar<int>(Query("crm_invoice_tax").SelectCount().Where(Exp.Eq("id", invoiceTax.ID))) == 0)
|
||||
if (!Query(CRMDbContext.InvoiceTax).Where(x => x.Id == invoiceTax.ID).Any())
|
||||
{
|
||||
invoiceTax.CreateOn = DateTime.UtcNow;
|
||||
invoiceTax.CreateBy = SecurityContext.CurrentAccount.ID;
|
||||
|
||||
invoiceTax.ID = Db.ExecuteScalar<int>(
|
||||
Insert("crm_invoice_tax")
|
||||
.InColumnValue("id", 0)
|
||||
.InColumnValue("name", invoiceTax.Name)
|
||||
.InColumnValue("description", invoiceTax.Description)
|
||||
.InColumnValue("rate", invoiceTax.Rate)
|
||||
.InColumnValue("create_on", invoiceTax.CreateOn)
|
||||
.InColumnValue("create_by", SecurityContext.CurrentAccount.ID)
|
||||
.InColumnValue("last_modifed_on", invoiceTax.LastModifedOn)
|
||||
.InColumnValue("last_modifed_by", invoiceTax.LastModifedBy)
|
||||
.Identity(1, 0, true));
|
||||
var itemToInsert = new DbInvoiceTax
|
||||
{
|
||||
Id = 0,
|
||||
Name = invoiceTax.Name,
|
||||
Description = invoiceTax.Description,
|
||||
Rate = invoiceTax.Rate,
|
||||
CreateOn = invoiceTax.CreateOn,
|
||||
CreateBy = invoiceTax.CreateBy,
|
||||
LastModifedBy = invoiceTax.LastModifedBy,
|
||||
LastModifedOn = invoiceTax.LastModifedOn,
|
||||
TenantId = TenantID
|
||||
};
|
||||
|
||||
CRMDbContext.InvoiceTax.Add(itemToInsert);
|
||||
|
||||
CRMDbContext.SaveChanges();
|
||||
|
||||
//invoiceTax.ID = Db.ExecuteScalar<int>(
|
||||
// Insert("crm_invoice_tax")
|
||||
// .InColumnValue("id", 0)
|
||||
// .InColumnValue("name", invoiceTax.Name)
|
||||
// .InColumnValue("description", invoiceTax.Description)
|
||||
// .InColumnValue("rate", invoiceTax.Rate)
|
||||
// .InColumnValue("create_on", invoiceTax.CreateOn)
|
||||
// .InColumnValue("create_by", SecurityContext.CurrentAccount.ID)
|
||||
// .InColumnValue("last_modifed_on", invoiceTax.LastModifedOn)
|
||||
// .InColumnValue("last_modifed_by", invoiceTax.LastModifedBy)
|
||||
// .Identity(1, 0, true));
|
||||
|
||||
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
var oldInvoiceTax = Db.ExecuteList(GetInvoiceTaxSqlQuery(Exp.Eq("id", invoiceTax.ID)))
|
||||
.ConvertAll(ToInvoiceTax)
|
||||
.FirstOrDefault();
|
||||
var oldInvoiceTax = GetByID(invoiceTax.ID);
|
||||
|
||||
CRMSecurity.DemandEdit(oldInvoiceTax);
|
||||
|
||||
// throw new NotImplementedException();
|
||||
|
||||
CRMDbContext.InvoiceTax.Add(itemToInsert);
|
||||
|
||||
CRMDbContext.SaveChanges();
|
||||
|
||||
Db.ExecuteNonQuery(
|
||||
Update("crm_invoice_tax")
|
||||
.Set("name", invoiceTax.Name)
|
||||
@ -196,11 +218,6 @@ namespace ASC.CRM.Core.Dao
|
||||
return invoiceTax;
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
|
||||
#region Delete
|
||||
|
||||
public virtual InvoiceTax DeleteInvoiceTax(int invoiceTaxID)
|
||||
{
|
||||
var invoiceTax = GetByID(invoiceTaxID);
|
||||
@ -209,54 +226,48 @@ namespace ASC.CRM.Core.Dao
|
||||
|
||||
CRMSecurity.DemandDelete(invoiceTax);
|
||||
|
||||
Db.ExecuteNonQuery(Delete("crm_invoice_tax").Where("id", invoiceTaxID));
|
||||
var itemToDelete = new DbInvoiceTax
|
||||
{
|
||||
Id = invoiceTaxID
|
||||
};
|
||||
|
||||
CRMDbContext.Attach(invoiceTax);
|
||||
CRMDbContext.Remove(itemToDelete);
|
||||
|
||||
CRMDbContext.SaveChanges();
|
||||
|
||||
/* _cache.Remove(_invoiceItemCacheKey);
|
||||
_cache.Insert(_invoiceTaxCacheKey, String.Empty);*/
|
||||
return invoiceTax;
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
|
||||
#region Private Methods
|
||||
|
||||
private static InvoiceTax ToInvoiceTax(object[] row)
|
||||
private InvoiceTax ToInvoiceTax(DbInvoiceTax dbInvoiceTax)
|
||||
{
|
||||
if (dbInvoiceTax == null) return null;
|
||||
|
||||
return new InvoiceTax
|
||||
{
|
||||
ID = Convert.ToInt32(row[0]),
|
||||
Name = Convert.ToString(row[1]),
|
||||
Description = Convert.ToString(row[2]),
|
||||
Rate = Convert.ToDecimal(row[3]),
|
||||
CreateOn = TenantUtil.DateTimeFromUtc(DateTime.Parse(row[4].ToString())),
|
||||
CreateBy = ToGuid(row[5]),
|
||||
LastModifedOn = TenantUtil.DateTimeFromUtc(DateTime.Parse(row[6].ToString())),
|
||||
LastModifedBy = ToGuid(row[7])
|
||||
ID = dbInvoiceTax.Id,
|
||||
Name = dbInvoiceTax.Name,
|
||||
Description = dbInvoiceTax.Description,
|
||||
Rate = dbInvoiceTax.Rate,
|
||||
CreateOn = dbInvoiceTax.CreateOn,
|
||||
CreateBy = dbInvoiceTax.CreateBy,
|
||||
LastModifedOn = TenantUtil.DateTimeFromUtc(dbInvoiceTax.LastModifedOn),
|
||||
LastModifedBy = dbInvoiceTax.LastModifedBy
|
||||
};
|
||||
}
|
||||
|
||||
private SqlQuery GetInvoiceTaxSqlQuery(Exp where)
|
||||
{
|
||||
var sqlQuery = Query("crm_invoice_tax")
|
||||
.Select(
|
||||
"id",
|
||||
"name",
|
||||
"description",
|
||||
"rate",
|
||||
"create_on",
|
||||
"create_by",
|
||||
"last_modifed_on",
|
||||
"last_modifed_by");
|
||||
|
||||
if (where != null)
|
||||
{
|
||||
sqlQuery.Where(where);
|
||||
}
|
||||
|
||||
return sqlQuery;
|
||||
}
|
||||
|
||||
#endregion
|
||||
//return new InvoiceTax
|
||||
// {
|
||||
// ID = Convert.ToInt32(row[0]),
|
||||
// Name = Convert.ToString(row[1]),
|
||||
// Description = Convert.ToString(row[2]),
|
||||
// Rate = Convert.ToDecimal(row[3]),
|
||||
// CreateOn = TenantUtil.DateTimeFromUtc(DateTime.Parse(row[4].ToString())),
|
||||
// CreateBy = ToGuid(row[5]),
|
||||
// LastModifedOn = TenantUtil.DateTimeFromUtc(DateTime.Parse(row[6].ToString())),
|
||||
// LastModifedBy = ToGuid(row[7])
|
||||
// };
|
||||
}
|
||||
}
|
||||
}
|
@ -23,36 +23,26 @@
|
||||
*
|
||||
*/
|
||||
|
||||
|
||||
#region Import
|
||||
|
||||
using ASC.Collections;
|
||||
using ASC.Core;
|
||||
using ASC.Core.Common.EF;
|
||||
using ASC.CRM.Classes;
|
||||
using ASC.CRM.Core.EF;
|
||||
using ASC.CRM.Core.Entities;
|
||||
using ASC.CRM.Core.Enums;
|
||||
using ASC.CRM.Resources;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Collections.Specialized;
|
||||
using System.Linq;
|
||||
using ASC.Collections;
|
||||
using ASC.Web.CRM.Classes;
|
||||
using ASC.Common.Data.Sql;
|
||||
using ASC.Common.Data.Sql.Expressions;
|
||||
using ASC.CRM.Core.Entities;
|
||||
using ASC.Web.CRM.Resources;
|
||||
|
||||
#endregion
|
||||
|
||||
namespace ASC.CRM.Core.Dao
|
||||
{
|
||||
|
||||
public class CachedListItem : ListItemDao
|
||||
{
|
||||
|
||||
#region Members
|
||||
|
||||
private readonly HttpRequestDictionary<ListItem> _listItemCache = new HttpRequestDictionary<ListItem>("crm_list_item");
|
||||
|
||||
#endregion
|
||||
|
||||
#region Constructor
|
||||
|
||||
public CachedListItem(int tenantID)
|
||||
: base(tenantID)
|
||||
{
|
||||
@ -60,10 +50,6 @@ namespace ASC.CRM.Core.Dao
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region Members
|
||||
|
||||
public override void ChangeColor(int id, string newColor)
|
||||
{
|
||||
ResetCache(id);
|
||||
@ -113,66 +99,56 @@ namespace ASC.CRM.Core.Dao
|
||||
{
|
||||
_listItemCache.Reset(id.ToString());
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
|
||||
}
|
||||
|
||||
public class ListItemDao : AbstractDao
|
||||
{
|
||||
#region Constructor
|
||||
|
||||
public ListItemDao(int tenantID)
|
||||
: base(tenantID)
|
||||
public ListItemDao(
|
||||
DbContextManager<CRMDbContext> dbContextManager,
|
||||
TenantManager tenantManager,
|
||||
SecurityContext securityContext)
|
||||
: base(dbContextManager,
|
||||
tenantManager,
|
||||
securityContext)
|
||||
{
|
||||
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
|
||||
|
||||
public bool IsExist(ListType listType, String title)
|
||||
{
|
||||
var q = new SqlQuery("crm_list_item")
|
||||
.Select("1")
|
||||
.Where("tenant_id", TenantID)
|
||||
.Where("list_type", (int)listType)
|
||||
.Where("title", title)
|
||||
.SetMaxResults(1);
|
||||
|
||||
return Db.ExecuteScalar<bool>(q);
|
||||
return CRMDbContext.ListItem
|
||||
.Where(x => x.TenantId == TenantID && x.ListType == listType && String.Compare(x.Title, title, true) == 0)
|
||||
.Any();
|
||||
}
|
||||
|
||||
public bool IsExist(int id)
|
||||
{
|
||||
return Db.ExecuteScalar<bool>("select exists(select 1 from crm_list_item where tenant_id = @tid and id = @id)",
|
||||
new { tid = TenantID, id = id });
|
||||
return CRMDbContext.ListItem.Where(x => x.Id == id).Any();
|
||||
}
|
||||
|
||||
public List<ListItem> GetItems()
|
||||
{
|
||||
var sqlQuery = GetListItemSqlQuery(null).OrderBy("sort_order", true);
|
||||
|
||||
return Db.ExecuteList(sqlQuery).ConvertAll(ToListItem);
|
||||
return Query(CRMDbContext.ListItem)
|
||||
.OrderBy(x => x.SortOrder)
|
||||
.ToList()
|
||||
.ConvertAll(ToListItem);
|
||||
}
|
||||
|
||||
public List<ListItem> GetItems(ListType listType)
|
||||
{
|
||||
var sqlQuery = GetListItemSqlQuery(Exp.Eq("list_type", (int)listType))
|
||||
.OrderBy("sort_order", true);
|
||||
|
||||
return Db.ExecuteList(sqlQuery).ConvertAll(ToListItem);
|
||||
return Query(CRMDbContext.ListItem)
|
||||
.Where(x => x.ListType == listType)
|
||||
.OrderBy(x => x.SortOrder)
|
||||
.ToList()
|
||||
.ConvertAll(ToListItem);
|
||||
}
|
||||
|
||||
public int GetItemsCount(ListType listType)
|
||||
{
|
||||
SqlQuery sqlQuery = Query("crm_list_item").SelectCount().Where(Exp.Eq("list_type", (int)listType))
|
||||
.OrderBy("sort_order", true);
|
||||
|
||||
return Db.ExecuteScalar<int>(sqlQuery);
|
||||
return Query(CRMDbContext.ListItem)
|
||||
.Where(x => x.ListType == listType)
|
||||
.OrderBy(x => x.SortOrder).Count();
|
||||
}
|
||||
|
||||
public ListItem GetSystemListItem(int id)
|
||||
@ -235,9 +211,7 @@ namespace ASC.CRM.Core.Dao
|
||||
{
|
||||
if (id < 0) return GetSystemListItem(id);
|
||||
|
||||
var result = Db.ExecuteList(GetListItemSqlQuery(Exp.Eq("id", id))).ConvertAll(ToListItem);
|
||||
|
||||
return result.Count > 0 ? result[0] : null;
|
||||
return ToListItem(Query(CRMDbContext.ListItem).FirstOrDefault(x => x.Id == id));
|
||||
}
|
||||
|
||||
public virtual List<ListItem> GetItems(int[] id)
|
||||
@ -251,7 +225,10 @@ namespace ASC.CRM.Core.Dao
|
||||
|
||||
public virtual List<ListItem> GetAll()
|
||||
{
|
||||
return Db.ExecuteList(GetListItemSqlQuery(null)).ConvertAll(ToListItem);
|
||||
return CRMDbContext
|
||||
.ListItem
|
||||
.ToList()
|
||||
.ConvertAll(ToListItem);
|
||||
}
|
||||
|
||||
public virtual void ChangeColor(int id, string newColor)
|
||||
@ -277,9 +254,8 @@ namespace ASC.CRM.Core.Dao
|
||||
|
||||
public ListItem GetByTitle(ListType listType, string title)
|
||||
{
|
||||
var result = Db.ExecuteList(GetListItemSqlQuery(Exp.Eq("title", title) & Exp.Eq("list_type", (int)listType))).ConvertAll(ToListItem);
|
||||
|
||||
return result.Count > 0 ? result[0] : null;
|
||||
return ToListItem(Query(CRMDbContext.ListItem)
|
||||
.FirstOrDefault(x => String.Compare(x.Title, title, true) == 0 && x.ListType == listType));
|
||||
}
|
||||
|
||||
public int GetRelativeItemsCount(ListType listType, int id)
|
||||
@ -428,6 +404,7 @@ namespace ASC.CRM.Core.Dao
|
||||
|
||||
public virtual void ChangePicture(int id, String newPicture)
|
||||
{
|
||||
|
||||
Db.ExecuteNonQuery(Update("crm_list_item")
|
||||
.Set("additional_params", newPicture)
|
||||
.Where(Exp.Eq("id", id)));
|
||||
@ -474,8 +451,6 @@ namespace ASC.CRM.Core.Dao
|
||||
if (!IsExist(toItemID))
|
||||
throw new ArgumentException("", "toItemID");
|
||||
|
||||
SqlUpdate sqlUpdate;
|
||||
|
||||
switch (listType)
|
||||
{
|
||||
case ListType.ContactStatus:
|
||||
@ -526,60 +501,44 @@ namespace ASC.CRM.Core.Dao
|
||||
}
|
||||
}
|
||||
|
||||
Db.ExecuteNonQuery(Delete("crm_list_item").Where(Exp.Eq("id", itemID) & Exp.Eq("list_type", (int)listType)));
|
||||
var itemToRemove = Query(CRMDbContext.ListItem).FirstOrDefault(x => x.Id == itemID);
|
||||
|
||||
CRMDbContext.ListItem.Remove(itemToRemove);
|
||||
CRMDbContext.SaveChanges();
|
||||
|
||||
}
|
||||
|
||||
public virtual void ReorderItems(ListType listType, String[] titles)
|
||||
{
|
||||
using (var tx = Db.BeginTransaction())
|
||||
{
|
||||
using var tx = CRMDbContext.Database.BeginTransaction();
|
||||
|
||||
for (int index = 0; index < titles.Length; index++)
|
||||
{
|
||||
Db.ExecuteNonQuery(Update("crm_list_item")
|
||||
.Set("sort_order", index)
|
||||
.Where(Exp.Eq("title", titles[index]) & Exp.Eq("list_type", (int)listType)));
|
||||
|
||||
}
|
||||
|
||||
tx.Commit();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private SqlQuery GetListItemSqlQuery(Exp where)
|
||||
public static ListItem ToListItem(DbListItem dbListItem)
|
||||
{
|
||||
var result = Query("crm_list_item")
|
||||
.Select(
|
||||
"id",
|
||||
"title",
|
||||
"description",
|
||||
"color",
|
||||
"sort_order",
|
||||
"additional_params",
|
||||
"list_type"
|
||||
);
|
||||
if (dbListItem == null) return null;
|
||||
|
||||
if (where != null)
|
||||
result.Where(where);
|
||||
|
||||
return result;
|
||||
|
||||
}
|
||||
|
||||
public static ListItem ToListItem(object[] row)
|
||||
{
|
||||
var result = new ListItem
|
||||
{
|
||||
ID = Convert.ToInt32(row[0]),
|
||||
Title = Convert.ToString(row[1]),
|
||||
Description = Convert.ToString(row[2]),
|
||||
Color = Convert.ToString(row[3]),
|
||||
SortOrder = Convert.ToInt32(row[4]),
|
||||
AdditionalParams = Convert.ToString(row[5])
|
||||
ID = dbListItem.Id,
|
||||
Title = dbListItem.Title,
|
||||
Description = dbListItem.Description,
|
||||
Color = dbListItem.Color,
|
||||
SortOrder = dbListItem.SortOrder,
|
||||
AdditionalParams = dbListItem.AdditionalParams,
|
||||
ListType = dbListItem.ListType
|
||||
};
|
||||
|
||||
ListType listType;
|
||||
if (Enum.TryParse(Convert.ToString(row[6]), out listType))
|
||||
{
|
||||
result.ListType = listType;
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
}
|
||||
|
@ -36,6 +36,7 @@ using ASC.Web.CRM.Classes;
|
||||
using ASC.Common.Data.Sql;
|
||||
using ASC.Common.Data.Sql.Expressions;
|
||||
using ASC.CRM.Core.Entities;
|
||||
using ASC.CRM.Core.Enums;
|
||||
|
||||
|
||||
#endregion
|
||||
|
@ -48,9 +48,6 @@ namespace ASC.CRM.Core.Dao
|
||||
|
||||
public class ManagerDao : AbstractDao
|
||||
{
|
||||
|
||||
#region Constructor
|
||||
|
||||
public ManagerDao(int tenantID, String storageKey)
|
||||
: base(tenantID, storageKey)
|
||||
{
|
||||
@ -58,10 +55,6 @@ namespace ASC.CRM.Core.Dao
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region Methods
|
||||
|
||||
public void Add(Guid managerID)
|
||||
{
|
||||
DbManager.ExecuteNonQuery(Insert("crm_manager").InColumnValue("id", managerID));
|
||||
@ -86,8 +79,6 @@ namespace ASC.CRM.Core.Dao
|
||||
return managers;
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
}
|
||||
|
||||
}
|
@ -321,8 +321,8 @@ namespace ASC.CRM.Core.Dao
|
||||
|
||||
if (item.CreateOn == DateTime.MinValue)
|
||||
item.CreateOn = TenantUtil.DateTimeNow();
|
||||
item.CreateBy = ASC.Core.SecurityContext.CurrentAccount.ID;
|
||||
item.LastModifedBy = ASC.Core.SecurityContext.CurrentAccount.ID;
|
||||
item.CreateBy = SecurityContext.CurrentAccount.ID;
|
||||
item.LastModifedBy = SecurityContext.CurrentAccount.ID;
|
||||
|
||||
if (item.CategoryID == (int)HistoryCategorySystem.MailMessage)
|
||||
{
|
||||
|
@ -46,28 +46,16 @@ namespace ASC.CRM.Core.Dao
|
||||
{
|
||||
public class SearchDao : AbstractDao
|
||||
{
|
||||
#region Members
|
||||
|
||||
private Dictionary<EntityType, IEnumerable<int>> _findedIDs;
|
||||
private bool _fullTextSearchEnable;
|
||||
private DaoFactory DaoFactory { get; set; }
|
||||
|
||||
#endregion
|
||||
|
||||
#region Constructor
|
||||
|
||||
public SearchDao(int tenantID, DaoFactory daoFactory)
|
||||
: base(tenantID)
|
||||
{
|
||||
DaoFactory = daoFactory;
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region Methods
|
||||
|
||||
#region Public
|
||||
|
||||
public SearchResultItem[] Search(String searchText)
|
||||
{
|
||||
var keywords = searchText.Split(new[] { ' ' }, StringSplitOptions.RemoveEmptyEntries)
|
||||
@ -132,10 +120,6 @@ namespace ASC.CRM.Core.Dao
|
||||
return ToSearchResultItem(Db.ExecuteList(searchQuery));
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region Private
|
||||
|
||||
private Dictionary<EntityType, IEnumerable<int>> SearchByRelationshipEvent(String[] keywords)
|
||||
{
|
||||
var historyQuery = Query("crm_relationship_event")
|
||||
@ -434,9 +418,5 @@ namespace ASC.CRM.Core.Dao
|
||||
throw new ArgumentException();
|
||||
}
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#endregion
|
||||
}
|
||||
}
|
@ -24,34 +24,31 @@
|
||||
*/
|
||||
|
||||
|
||||
using ASC.Core;
|
||||
using ASC.Core.Common.EF;
|
||||
using ASC.CRM.Core.EF;
|
||||
using ASC.CRM.Core.Enums;
|
||||
using ASC.CRM.Resources;
|
||||
using Microsoft.EntityFrameworkCore.Internal;
|
||||
using Newtonsoft.Json;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using ASC.Common.Data;
|
||||
using ASC.Common.Data.Sql;
|
||||
using ASC.Common.Data.Sql.Expressions;
|
||||
using ASC.CRM.Core.Entities;
|
||||
using Newtonsoft.Json;
|
||||
using ASC.Web.CRM.Resources;
|
||||
using ASC.CRM.Core.Enums;
|
||||
|
||||
namespace ASC.CRM.Core.Dao
|
||||
{
|
||||
public class TagDao : AbstractDao
|
||||
{
|
||||
#region Constructor
|
||||
|
||||
public TagDao(int tenantID)
|
||||
: base(tenantID)
|
||||
public TagDao(DbContextManager<CRMDbContext> dbContextManager,
|
||||
TenantManager tenantManager,
|
||||
SecurityContext securityContext) :
|
||||
base(dbContextManager,
|
||||
tenantManager,
|
||||
securityContext)
|
||||
{
|
||||
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region Methods
|
||||
|
||||
public bool IsExist(EntityType entityType, String tagName)
|
||||
{
|
||||
if (String.IsNullOrEmpty(tagName))
|
||||
@ -62,46 +59,32 @@ namespace ASC.CRM.Core.Dao
|
||||
|
||||
private bool IsExistInDb(EntityType entityType, String tagName)
|
||||
{
|
||||
var q = new SqlQuery("crm_tag")
|
||||
.Select("1")
|
||||
.Where("tenant_id", TenantID)
|
||||
.Where("entity_type", (int)entityType)
|
||||
.Where("trim(lower(title))", tagName.Trim().ToLower())
|
||||
.SetMaxResults(1);
|
||||
|
||||
return Db.ExecuteScalar<bool>(q);
|
||||
return Query(CRMDbContext.Tags)
|
||||
.Where(x => x.EntityType == entityType && String.Compare(x.Title, tagName, true) == 0).Any();
|
||||
}
|
||||
|
||||
private int GetTagId(EntityType entityType, String tagName)
|
||||
{
|
||||
var q = new SqlQuery("crm_tag")
|
||||
.Select("id")
|
||||
.Where("tenant_id", TenantID)
|
||||
.Where("entity_type", (int)entityType)
|
||||
.Where("trim(lower(title))", tagName.Trim().ToLower())
|
||||
.SetMaxResults(1);
|
||||
|
||||
return Db.ExecuteScalar<int>(q);
|
||||
return Query(CRMDbContext.Tags)
|
||||
.Where(x => x.EntityType == entityType && String.Compare(x.Title, tagName, true) == 0)
|
||||
.Select(x => x.Id)
|
||||
.SingleOrDefault();
|
||||
}
|
||||
|
||||
public String[] GetAllTags(EntityType entityType)
|
||||
{
|
||||
return Db.ExecuteList(
|
||||
Query("crm_tag")
|
||||
.Select("title")
|
||||
.Where(Exp.Eq("entity_type", (int)entityType))
|
||||
.OrderBy("title", true)).ConvertAll(row => row[0].ToString()).ToArray();
|
||||
return CRMDbContext.Tags
|
||||
.Where(x => x.EntityType == entityType)
|
||||
.OrderBy(x => x.Title)
|
||||
.Select(x => x.Title)
|
||||
.ToArray();
|
||||
}
|
||||
|
||||
public List<KeyValuePair<EntityType, string>> GetAllTags()
|
||||
{
|
||||
return Db.ExecuteList(
|
||||
Query("crm_tag")
|
||||
.Select("title", "entity_type")
|
||||
.OrderBy("title", true))
|
||||
.ConvertAll(row => new KeyValuePair<EntityType, string>(
|
||||
(EntityType)Enum.Parse(typeof(EntityType), row[1].ToString(), true),
|
||||
row[0].ToString()));
|
||||
return Query(CRMDbContext.Tags)
|
||||
.OrderBy(x => x.Title)
|
||||
.Select(x => new KeyValuePair<EntityType, string> (x.EntityType, x.Title)).ToList();
|
||||
}
|
||||
|
||||
public String GetTagsLinkCountJSON(EntityType entityType)
|
||||
@ -112,21 +95,42 @@ namespace ASC.CRM.Core.Dao
|
||||
|
||||
public IEnumerable<int> GetTagsLinkCount(EntityType entityType)
|
||||
{
|
||||
var sqlQuery = new SqlQuery("crm_tag tbl_tag")
|
||||
.SelectCount("tag_id")
|
||||
.LeftOuterJoin("crm_entity_tag", Exp.EqColumns("id", "tag_id"))
|
||||
.Where(Exp.Eq("tbl_tag.entity_type", (int)entityType) & Exp.Eq("tbl_tag.tenant_id", TenantID))
|
||||
.OrderBy("title", true)
|
||||
.GroupBy("tbl_tag.id");
|
||||
|
||||
var queryResult = Db.ExecuteList(sqlQuery);
|
||||
return queryResult.ConvertAll(row => Convert.ToInt32(row[0]));
|
||||
//var temp = Query(CRMDbContext.Tags)
|
||||
// .Join(CRMDbContext.CrmEntityTag,
|
||||
// x => x.Id,
|
||||
// y => y.TagId,
|
||||
// (x, y) => new
|
||||
// {
|
||||
// x,
|
||||
// y
|
||||
|
||||
// })
|
||||
// .Where(x => x.y.EntityType == entityType)
|
||||
// .GroupBy(x=> x.x.Id)
|
||||
// .OrderBy(x => x.x.Title)
|
||||
|
||||
// .Count();
|
||||
|
||||
|
||||
|
||||
//var sqlQuery = new SqlQuery("crm_tag tbl_tag")
|
||||
// .SelectCount("tag_id")
|
||||
// .LeftOuterJoin("crm_entity_tag", Exp.EqColumns("id", "tag_id"))
|
||||
// .Where(Exp.Eq("tbl_tag.entity_type", (int)entityType) & Exp.Eq("tbl_tag.tenant_id", TenantID))
|
||||
// .OrderBy("title", true)
|
||||
// .GroupBy("tbl_tag.id");
|
||||
|
||||
//var queryResult = Db.ExecuteList(sqlQuery);
|
||||
|
||||
// return queryResult.ConvertAll(row => Convert.ToInt32(row[0]));
|
||||
|
||||
throw new NotImplementedException();
|
||||
}
|
||||
|
||||
|
||||
public Dictionary<int, List<String>> GetEntitiesTags(EntityType entityType)
|
||||
{
|
||||
|
||||
var result = new Dictionary<int, List<String>>();
|
||||
|
||||
var sqlQuery =
|
||||
@ -154,31 +158,47 @@ namespace ASC.CRM.Core.Dao
|
||||
|
||||
public String[] GetEntityTags(EntityType entityType, int entityID)
|
||||
{
|
||||
//SqlQuery sqlQuery = Query("crm_tag")
|
||||
// .Select("title")
|
||||
// .LeftOuterJoin("crm_entity_tag", Exp.EqColumns("id", "tag_id"))
|
||||
// .Where(Exp.Eq("entity_id", entityID) & Exp.Eq("crm_tag.entity_type", (int)entityType));
|
||||
|
||||
SqlQuery sqlQuery = Query("crm_tag")
|
||||
.Select("title")
|
||||
.LeftOuterJoin("crm_entity_tag", Exp.EqColumns("id", "tag_id"))
|
||||
.Where(Exp.Eq("entity_id", entityID) & Exp.Eq("crm_tag.entity_type", (int)entityType));
|
||||
//return Db.ExecuteList(sqlQuery).ConvertAll(row => Convert.ToString(row[0])).ToArray();
|
||||
|
||||
return Db.ExecuteList(sqlQuery).ConvertAll(row => Convert.ToString(row[0])).ToArray();
|
||||
return Query(CRMDbContext.Tags)
|
||||
.Join(CRMDbContext.EntityTags,
|
||||
x => x.Id,
|
||||
y => y.TagId,
|
||||
(x, y) => new
|
||||
{
|
||||
x, y
|
||||
|
||||
})
|
||||
.Where(x => x.y.EntityId == entityID && x.y.EntityType == entityType)
|
||||
.Select(x => x.x.Title).ToArray();
|
||||
}
|
||||
|
||||
|
||||
|
||||
public String[] GetUnusedTags(EntityType entityType)
|
||||
public string[] GetUnusedTags(EntityType entityType)
|
||||
{
|
||||
return Db.ExecuteList(Query("crm_tag")
|
||||
.Select("title")
|
||||
.LeftOuterJoin("crm_entity_tag", Exp.EqColumns("tag_id", "id"))
|
||||
.Where(Exp.Eq("tag_id", Exp.Empty) & Exp.Eq("crm_tag.entity_type", (int)entityType))).ConvertAll(row => Convert.ToString(row[0])).ToArray();
|
||||
return Query(CRMDbContext.Tags)
|
||||
.GroupJoin(CRMDbContext.EntityTags.DefaultIfEmpty(),
|
||||
x => x.Id,
|
||||
y => y.TagId,
|
||||
(x, y) => new { x, y })
|
||||
.Where(x => x.y == null && x.x.EntityType == entityType)
|
||||
.Select(x => x.x.Title).ToArray();
|
||||
|
||||
//return Db.ExecuteList(Query("crm_tag")
|
||||
// .Select("title")
|
||||
// .LeftOuterJoin("crm_entity_tag", Exp.EqColumns("tag_id", "id"))
|
||||
// .Where(Exp.Eq("tag_id", Exp.Empty) & Exp.Eq("crm_tag.entity_type", (int)entityType))).ConvertAll(row => Convert.ToString(row[0])).ToArray();
|
||||
}
|
||||
|
||||
public bool CanDeleteTag(EntityType entityType, String tagName)
|
||||
{
|
||||
var tagID = Db.ExecuteScalar<int>(Query("crm_tag").Select("id")
|
||||
.Where(Exp.Eq("trim(lower(title))", tagName.Trim().ToLower()) & Exp.Eq("entity_type", (int)entityType)));
|
||||
|
||||
return tagID != 0;
|
||||
return Query(CRMDbContext.Tags)
|
||||
.Where(x => string.Compare(x.Title, tagName, true) == 0 && x.EntityType == entityType)
|
||||
.Select(x => x.Id).SingleOrDefault() != 0;
|
||||
}
|
||||
|
||||
public void DeleteTag(EntityType entityType, String tagName)
|
||||
@ -190,59 +210,72 @@ namespace ASC.CRM.Core.Dao
|
||||
|
||||
public void DeleteTagFromEntity(EntityType entityType, int entityID, String tagName)
|
||||
{
|
||||
var tagID = Db.ExecuteScalar<int>(Query("crm_tag").Select("id")
|
||||
.Where(Exp.Eq("trim(lower(title))", tagName.Trim().ToLower()) & Exp.Eq("entity_type", (int)entityType)));
|
||||
var tagID = Query(CRMDbContext.Tags)
|
||||
.Where(x => String.Compare(x.Title, tagName, true) == 0 && x.EntityType == entityType)
|
||||
.Select(x => x.Id).SingleOrDefault();
|
||||
|
||||
if (tagID == 0) return;
|
||||
|
||||
var sqlQuery = new SqlDelete("crm_entity_tag")
|
||||
.Where(Exp.Eq("entity_type", (int)entityType) & Exp.Eq("tag_id", tagID));
|
||||
var itemsToRemove = CRMDbContext.EntityTags.Where(x => x.EntityType == entityType && x.TagId == tagID);
|
||||
|
||||
if (entityID > 0)
|
||||
sqlQuery.Where(Exp.Eq("entity_id", entityID));
|
||||
itemsToRemove = itemsToRemove.Where(x => x.EntityId == entityID);
|
||||
|
||||
Db.ExecuteNonQuery(sqlQuery);
|
||||
CRMDbContext.RemoveRange(itemsToRemove);
|
||||
|
||||
if (entityID == 0)
|
||||
Db.ExecuteNonQuery(Delete("crm_tag")
|
||||
.Where(Exp.Eq("id", tagID) & Exp.Eq("entity_type", (int)entityType)));
|
||||
CRMDbContext.Tags.RemoveRange(Query(CRMDbContext.Tags).Where(x => x.Id == tagID && x.EntityType == entityType));
|
||||
|
||||
CRMDbContext.SaveChanges();
|
||||
}
|
||||
|
||||
public void DeleteAllTagsFromEntity(EntityType entityType, int entityID)
|
||||
{
|
||||
if (entityID <= 0) return;
|
||||
|
||||
var sqlQuery = new SqlDelete("crm_entity_tag")
|
||||
.Where(Exp.Eq("entity_type", (int)entityType) & Exp.Eq("entity_id", entityID));
|
||||
var itemsToRemove = CRMDbContext.EntityTags.Where(x => x.EntityType == entityType && x.EntityId == entityID);
|
||||
|
||||
Db.ExecuteNonQuery(sqlQuery);
|
||||
CRMDbContext.EntityTags.RemoveRange(itemsToRemove);
|
||||
|
||||
CRMDbContext.SaveChanges();
|
||||
}
|
||||
|
||||
public void DeleteUnusedTags(EntityType entityType)
|
||||
{
|
||||
|
||||
if (!_supportedEntityType.Contains(entityType))
|
||||
throw new ArgumentException();
|
||||
|
||||
using (var tx = Db.BeginTransaction())
|
||||
{
|
||||
using var tx = CRMDbContext.Database.BeginTransaction();
|
||||
|
||||
var sqlSubQuery = Query("crm_tag")
|
||||
.Select("id")
|
||||
.LeftOuterJoin("crm_entity_tag", Exp.EqColumns("tag_id", "id"))
|
||||
.Where(Exp.Eq("crm_tag.entity_type", (int)entityType) & Exp.Eq("tag_id", Exp.Empty));
|
||||
|
||||
var tagIDs = Db.ExecuteList(sqlSubQuery).ConvertAll(row => Convert.ToInt32(row[0]));
|
||||
//var temp = from e in CRMDbContext.Tags
|
||||
// select new { };
|
||||
|
||||
if (tagIDs.Count > 0)
|
||||
Db.ExecuteNonQuery(Delete("crm_tag").Where(Exp.In("id", tagIDs) & Exp.Eq("entity_type", (int)entityType)));
|
||||
// Query(CRMDbContext.Tags).Join()
|
||||
// .Select(x => x.Id);
|
||||
|
||||
//var sqlSubQuery = Query("crm_tag")
|
||||
// .Select("id")
|
||||
// .LeftOuterJoin("crm_entity_tag", Exp.EqColumns("tag_id", "id"))
|
||||
// .Where(Exp.Eq("crm_tag.entity_type", (int)entityType) & Exp.Eq("tag_id", Exp.Empty));
|
||||
|
||||
//List<int> tagIDs = Db.ExecuteList(sqlSubQuery).ConvertAll(row => Convert.ToInt32(row[0]));
|
||||
|
||||
// Query(CRMDbContext.Tags).Join()
|
||||
|
||||
|
||||
//if (tagIDs.Count > 0)
|
||||
//{
|
||||
// var itemToDelete = Query(CRMDbContext.Tags).Where(x => x.EntityType == entityType && tagIDs.Contains(x.Id));
|
||||
|
||||
// CRMDbContext.RemoveRange(itemToDelete);
|
||||
//}
|
||||
|
||||
CRMDbContext.SaveChanges();
|
||||
|
||||
tx.Commit();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public int AddTag(EntityType entityType, String tagName, bool returnExisted = false)
|
||||
{
|
||||
tagName = CorrectTag(tagName);
|
||||
@ -264,12 +297,17 @@ namespace ASC.CRM.Core.Dao
|
||||
|
||||
private int AddTagInDb(EntityType entityType, String tagName)
|
||||
{
|
||||
return Db.ExecuteScalar<int>(
|
||||
Insert("crm_tag")
|
||||
.InColumnValue("id", 0)
|
||||
.InColumnValue("title", tagName)
|
||||
.InColumnValue("entity_type", (int)entityType)
|
||||
.Identity(1, 0, true));
|
||||
var dbTag = new DbTag
|
||||
{
|
||||
Title = tagName,
|
||||
EntityType = entityType
|
||||
};
|
||||
|
||||
CRMDbContext.Tags.Add(dbTag);
|
||||
|
||||
CRMDbContext.SaveChanges();
|
||||
|
||||
return dbTag.Id;
|
||||
}
|
||||
|
||||
|
||||
@ -277,15 +315,12 @@ namespace ASC.CRM.Core.Dao
|
||||
{
|
||||
tags = tags.Select(CorrectTag).Where(t => !string.IsNullOrWhiteSpace(t)).ToArray();
|
||||
|
||||
var tagNamesAndIds = new Dictionary<string, int>();
|
||||
using var tx = CRMDbContext.Database.BeginTransaction();
|
||||
|
||||
using (var tx = Db.BeginTransaction())
|
||||
{
|
||||
|
||||
Db.ExecuteList(Query("crm_tag").Select("id", "title")
|
||||
.Where(Exp.In("trim(lower(title))", tags.ToList().ConvertAll(t => t.ToLower())) & Exp.Eq("entity_type", (int)entityType)))
|
||||
.ForEach(row =>
|
||||
{ tagNamesAndIds[row[1].ToString()] = (int)row[0]; });
|
||||
var tagNamesAndIds = Query(CRMDbContext.Tags)
|
||||
.Where(x => tags.Contains(x.Title) && x.EntityType == entityType)
|
||||
.Select(x => new { x.Id, x.Title })
|
||||
.ToDictionary(x => x.Title, x => x.Id);
|
||||
|
||||
var tagsForCreate = tags.Where(t => !tagNamesAndIds.ContainsKey(t));
|
||||
|
||||
@ -295,10 +330,9 @@ namespace ASC.CRM.Core.Dao
|
||||
}
|
||||
|
||||
tx.Commit();
|
||||
|
||||
return tagNamesAndIds;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
private int AddTagToEntityInDb(EntityType entityType, int entityID, String tagName)
|
||||
{
|
||||
@ -307,16 +341,21 @@ namespace ASC.CRM.Core.Dao
|
||||
if (String.IsNullOrEmpty(tagName) || entityID == 0)
|
||||
throw new ArgumentException();
|
||||
|
||||
var tagID = Db.ExecuteScalar<int>(Query("crm_tag").Select("id")
|
||||
.Where(Exp.Eq("trim(lower(title))", tagName.ToLower()) & Exp.Eq("entity_type", (int)entityType)));
|
||||
var tagID = Query(CRMDbContext.Tags)
|
||||
.Where(x => String.Compare(x.Title, tagName, true) == 0 && x.EntityType == entityType)
|
||||
.Select(x => x.Id).SingleOrDefault();
|
||||
|
||||
if (tagID == 0)
|
||||
tagID = AddTagInDb(entityType, tagName);
|
||||
|
||||
Db.ExecuteNonQuery(new SqlInsert("crm_entity_tag", true)
|
||||
.InColumnValue("entity_id", entityID)
|
||||
.InColumnValue("entity_type", (int)entityType)
|
||||
.InColumnValue("tag_id", tagID));
|
||||
CRMDbContext.EntityTags.Add(new DbEntityTag
|
||||
{
|
||||
EntityId = entityID,
|
||||
EntityType = entityType,
|
||||
TagId = tagID
|
||||
});
|
||||
|
||||
CRMDbContext.SaveChanges();
|
||||
|
||||
return tagID;
|
||||
}
|
||||
@ -333,87 +372,105 @@ namespace ASC.CRM.Core.Dao
|
||||
if (String.IsNullOrEmpty(tagName) || contactID == null || contactID.Length == 0)
|
||||
throw new ArgumentException();
|
||||
|
||||
using (var tx = Db.BeginTransaction())
|
||||
{
|
||||
var tagID = Db.ExecuteScalar<int>(Query("crm_tag").Select("id")
|
||||
.Where(Exp.Eq("trim(lower(title))", tagName.ToLower()) & Exp.Eq("entity_type", (int)EntityType.Contact)));
|
||||
using var tx = CRMDbContext.Database.BeginTransaction();
|
||||
|
||||
var tagID = Query(CRMDbContext.Tags)
|
||||
.Where(x => String.Compare(x.Title, tagName, true) == 0 && x.EntityType == EntityType.Contact)
|
||||
.Select(x => x.Id).SingleOrDefault();
|
||||
|
||||
if (tagID == 0)
|
||||
tagID = AddTagInDb(EntityType.Contact, tagName);
|
||||
|
||||
foreach (var id in contactID)
|
||||
{
|
||||
Db.ExecuteNonQuery(new SqlInsert("crm_entity_tag", true)
|
||||
.InColumnValue("entity_id", id)
|
||||
.InColumnValue("entity_type", (int)EntityType.Contact)
|
||||
.InColumnValue("tag_id", tagID));
|
||||
CRMDbContext.EntityTags.Add(new DbEntityTag
|
||||
{
|
||||
EntityId = id,
|
||||
EntityType = EntityType.Contact,
|
||||
TagId = tagID
|
||||
});
|
||||
}
|
||||
|
||||
CRMDbContext.SaveChanges();
|
||||
|
||||
tx.Commit();
|
||||
|
||||
return tagID;
|
||||
}
|
||||
}
|
||||
|
||||
public int DeleteTagFromContacts(int[] contactID, String tagName)
|
||||
{
|
||||
if (String.IsNullOrEmpty(tagName) || contactID == null || contactID.Length == 0)
|
||||
throw new ArgumentException();
|
||||
|
||||
using (var tx = Db.BeginTransaction())
|
||||
{
|
||||
var tagID = Db.ExecuteScalar<int>(Query("crm_tag").Select("id")
|
||||
.Where(Exp.Eq("trim(lower(title))", tagName.Trim().ToLower()) & Exp.Eq("entity_type", (int)EntityType.Contact)));
|
||||
using var tx = CRMDbContext.Database.BeginTransaction();
|
||||
|
||||
var tagID = Query(CRMDbContext.Tags)
|
||||
.Where(x => String.Compare(x.Title, tagName, true) == 0 && x.EntityType == EntityType.Contact)
|
||||
.Select(x => x.Id)
|
||||
.SingleOrDefault();
|
||||
|
||||
if (tagID == 0)
|
||||
throw new ArgumentException();
|
||||
|
||||
var itemsToRemove = CRMDbContext
|
||||
.EntityTags
|
||||
.Where(x => x.EntityType == EntityType.Contact &&
|
||||
x.TagId == tagID &&
|
||||
contactID.Contains(x.EntityId));
|
||||
|
||||
foreach (var id in contactID)
|
||||
{
|
||||
Db.ExecuteNonQuery(new SqlDelete("crm_entity_tag")
|
||||
.Where(Exp.Eq("entity_id", id) &
|
||||
Exp.Eq("entity_type", (int)EntityType.Contact) &
|
||||
Exp.Eq("tag_id", tagID)));
|
||||
CRMDbContext.EntityTags.RemoveRange(itemsToRemove);
|
||||
|
||||
CRMDbContext.SaveChanges();
|
||||
|
||||
}
|
||||
tx.Commit();
|
||||
|
||||
return tagID;
|
||||
}
|
||||
}
|
||||
|
||||
public void SetTagToEntity(EntityType entityType, int entityID, String[] tags)
|
||||
{
|
||||
using (var tx = Db.BeginTransaction())
|
||||
{
|
||||
Db.ExecuteNonQuery(new SqlDelete("crm_entity_tag")
|
||||
.Where(Exp.Eq("entity_id", entityID) & Exp.Eq("entity_type", (int)entityType)));
|
||||
using var tx = CRMDbContext.Database.BeginTransaction();
|
||||
|
||||
var itemsToDelete = CRMDbContext.EntityTags.Where(x => x.EntityId == entityID && x.EntityType == entityType);
|
||||
|
||||
CRMDbContext.EntityTags.RemoveRange(itemsToDelete);
|
||||
|
||||
foreach (var tagName in tags.Where(t => !string.IsNullOrWhiteSpace(t)))
|
||||
{
|
||||
AddTagToEntityInDb(entityType, entityID, tagName);
|
||||
}
|
||||
|
||||
CRMDbContext.SaveChanges();
|
||||
|
||||
tx.Commit();
|
||||
}
|
||||
}
|
||||
|
||||
private void AddTagToEntityInDb(EntityType entityType, int entityID, int tagID)
|
||||
{
|
||||
Db.ExecuteNonQuery(new SqlInsert("crm_entity_tag", true)
|
||||
.InColumnValue("entity_id", entityID)
|
||||
.InColumnValue("entity_type", (int)entityType)
|
||||
.InColumnValue("tag_id", tagID));
|
||||
CRMDbContext.EntityTags.Add(new DbEntityTag
|
||||
{
|
||||
EntityId = entityID,
|
||||
EntityType = entityType,
|
||||
TagId = tagID
|
||||
});
|
||||
|
||||
CRMDbContext.SaveChanges();
|
||||
}
|
||||
|
||||
public void AddTagToEntity(EntityType entityType, int entityID, int[] tagIDs)
|
||||
{
|
||||
using (var tx = Db.BeginTransaction())
|
||||
{
|
||||
using var tx = CRMDbContext.Database.BeginTransaction();
|
||||
|
||||
foreach (var tagID in tagIDs)
|
||||
{
|
||||
AddTagToEntityInDb(entityType, entityID, tagID);
|
||||
}
|
||||
|
||||
CRMDbContext.SaveChanges();
|
||||
|
||||
tx.Commit();
|
||||
}
|
||||
}
|
||||
|
||||
private static string CorrectTag(string tag)
|
||||
{
|
||||
@ -425,6 +482,5 @@ namespace ASC.CRM.Core.Dao
|
||||
.Replace("\r", string.Empty);
|
||||
}
|
||||
|
||||
#endregion
|
||||
}
|
||||
}
|
||||
|
@ -24,23 +24,22 @@
|
||||
*/
|
||||
|
||||
|
||||
using ASC.Collections;
|
||||
using ASC.Common.Logging;
|
||||
using ASC.Core;
|
||||
using ASC.Core.Common.EF;
|
||||
using ASC.Core.Tenants;
|
||||
using ASC.CRM.Core.EF;
|
||||
using ASC.CRM.Core.Entities;
|
||||
using ASC.CRM.Core.Enums;
|
||||
using ASC.ElasticSearch;
|
||||
using ASC.Web.CRM.Core.Search;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Globalization;
|
||||
using System.Linq;
|
||||
using System.Text.RegularExpressions;
|
||||
|
||||
using ASC.Collections;
|
||||
using ASC.Common.Data.Sql;
|
||||
using ASC.Common.Data.Sql.Expressions;
|
||||
using ASC.Common.Logging;
|
||||
using ASC.Core;
|
||||
using ASC.Core.Tenants;
|
||||
using ASC.CRM.Core.Entities;
|
||||
using ASC.CRM.Core.Enums;
|
||||
using ASC.ElasticSearch;
|
||||
using ASC.Web.CRM.Core.Search;
|
||||
|
||||
namespace ASC.CRM.Core.Dao
|
||||
{
|
||||
public class CachedTaskDao : TaskDao
|
||||
@ -92,57 +91,75 @@ namespace ASC.CRM.Core.Dao
|
||||
|
||||
public class TaskDao : AbstractDao
|
||||
{
|
||||
#region Constructor
|
||||
|
||||
public TaskDao(int tenantID)
|
||||
: base(tenantID)
|
||||
public TaskDao(DbContextManager<CRMDbContext> dbContextManager,
|
||||
TenantManager tenantManager,
|
||||
SecurityContext securityContext,
|
||||
CRMSecurity cRMSecurity,
|
||||
TenantUtil tenantUtil,
|
||||
FactoryIndexer<TasksWrapper> factoryIndexer
|
||||
) :
|
||||
base(dbContextManager,
|
||||
tenantManager,
|
||||
securityContext)
|
||||
{
|
||||
|
||||
|
||||
CRMSecurity = cRMSecurity;
|
||||
TenantUtil = tenantUtil;
|
||||
FactoryIndexer = factoryIndexer;
|
||||
}
|
||||
|
||||
#endregion
|
||||
public FactoryIndexer<TasksWrapper> FactoryIndexer { get; }
|
||||
|
||||
#region Methods
|
||||
public TenantUtil TenantUtil { get; }
|
||||
public CRMSecurity CRMSecurity { get; }
|
||||
|
||||
public void OpenTask(int taskID)
|
||||
public void OpenTask(int taskId)
|
||||
{
|
||||
var task = GetByID(taskID);
|
||||
var task = GetByID(taskId);
|
||||
|
||||
if (task == null)
|
||||
throw new ArgumentException();
|
||||
|
||||
CRMSecurity.DemandEdit(task);
|
||||
|
||||
Db.ExecuteNonQuery(
|
||||
Update("crm_task")
|
||||
.Set("is_closed", false)
|
||||
.Where(Exp.Eq("id", taskID))
|
||||
);
|
||||
DbTask entity = new DbTask()
|
||||
{
|
||||
Id = taskId,
|
||||
IsClosed = false
|
||||
};
|
||||
|
||||
CRMDbContext.Tasks.Update(entity);
|
||||
|
||||
CRMDbContext.SaveChanges();
|
||||
|
||||
}
|
||||
|
||||
public void CloseTask(int taskID)
|
||||
public void CloseTask(int taskId)
|
||||
{
|
||||
var task = GetByID(taskID);
|
||||
var task = GetByID(taskId);
|
||||
|
||||
if (task == null)
|
||||
throw new ArgumentException();
|
||||
|
||||
CRMSecurity.DemandEdit(task);
|
||||
|
||||
Db.ExecuteNonQuery(
|
||||
Update("crm_task")
|
||||
.Set("is_closed", true)
|
||||
.Where(Exp.Eq("id", taskID))
|
||||
);
|
||||
DbTask entity = new DbTask()
|
||||
{
|
||||
Id = taskId,
|
||||
IsClosed = true
|
||||
};
|
||||
|
||||
CRMDbContext.Tasks.Update(entity);
|
||||
|
||||
CRMDbContext.SaveChanges();
|
||||
}
|
||||
|
||||
public virtual Task GetByID(int taskID)
|
||||
{
|
||||
var tasks = Db.ExecuteList(GetTaskQuery(Exp.Eq("id", taskID)))
|
||||
.ConvertAll(row => ToTask(row));
|
||||
var crmTask = CRMDbContext.Tasks.Where(x => x.Id == taskID).SingleOrDefault();
|
||||
|
||||
return tasks.Count > 0 ? tasks[0] : null;
|
||||
if (crmTask == default(DbTask)) return null;
|
||||
|
||||
return ToTask(crmTask);
|
||||
}
|
||||
|
||||
public List<Task> GetTasks(EntityType entityType, int entityID, bool? onlyActiveTask)
|
||||
@ -152,11 +169,13 @@ namespace ASC.CRM.Core.Dao
|
||||
}
|
||||
public int GetAllTasksCount()
|
||||
{
|
||||
return Db.ExecuteScalar<int>(Query("crm_task").SelectCount());
|
||||
return CRMDbContext.Tasks.Count();
|
||||
}
|
||||
|
||||
public List<Task> GetAllTasks()
|
||||
{
|
||||
|
||||
|
||||
return Db.ExecuteList(
|
||||
GetTaskQuery(null)
|
||||
.OrderBy("deadline", true)
|
||||
@ -168,27 +187,19 @@ namespace ASC.CRM.Core.Dao
|
||||
{
|
||||
if (!ids.Any()) return;
|
||||
|
||||
Db.ExecuteNonQuery(new SqlUpdate("crm_task").Set("exec_alert", true).Where(Exp.In("id", ids.ToArray())));
|
||||
CRMDbContext.Tasks.UpdateRange(ids.Select(x => new DbTask { ExecAlert = true, Id = x })); ;
|
||||
|
||||
CRMDbContext.SaveChanges();
|
||||
}
|
||||
|
||||
public List<object[]> GetInfoForReminder(DateTime scheduleDate)
|
||||
{
|
||||
var sqlQuery = new SqlQuery("crm_task")
|
||||
.Select(
|
||||
"tenant_id",
|
||||
"id",
|
||||
"deadline",
|
||||
"alert_value",
|
||||
"responsible_id"
|
||||
)
|
||||
.Where(
|
||||
Exp.Eq("is_closed", false) &
|
||||
!Exp.Eq("alert_value", 0) &
|
||||
Exp.Eq("exec_alert", false) &
|
||||
Exp.Between("DATE_ADD(deadline, interval -alert_value minute)", scheduleDate.AddHours(-1), scheduleDate.AddHours(1))
|
||||
);
|
||||
|
||||
return Db.ExecuteList(sqlQuery);
|
||||
return CRMDbContext.Tasks.Where(x =>
|
||||
x.IsClosed == false &&
|
||||
x.AlertValue != 0 &&
|
||||
x.ExecAlert == false &&
|
||||
( x.Deadline.AddMinutes(-x.AlertValue) >= scheduleDate.AddHours(-1) && x.Deadline.AddMinutes(-x.AlertValue) <= scheduleDate.AddHours(-1))
|
||||
).Select(x => new object[]{ x.TenantId, x.Id, x.Deadline, x.AlertValue, x.ResponsibleId }).ToList();
|
||||
}
|
||||
|
||||
public List<Task> GetTasks(
|
||||
@ -302,7 +313,7 @@ namespace ASC.CRM.Core.Dao
|
||||
if (keywords.Length > 0)
|
||||
{
|
||||
List<int> tasksIds;
|
||||
if (!FactoryIndexer<TasksWrapper>.TrySelectIds(s => s.MatchAll(searchText), out tasksIds))
|
||||
if (!FactoryIndexer.TrySelectIds(s => s.MatchAll(searchText), out tasksIds))
|
||||
{
|
||||
sqlQuery.Where(BuildLike(new[] { taskTableAlias + ".title", taskTableAlias + ".description" }, keywords));
|
||||
}
|
||||
@ -427,7 +438,7 @@ namespace ASC.CRM.Core.Dao
|
||||
.Select("tbl_tsk.id")
|
||||
.InnerJoin("crm_contact tbl_ctc", Exp.EqColumns("tbl_tsk.contact_id", "tbl_ctc.id"))
|
||||
.InnerJoin("core_acl tbl_cl", Exp.EqColumns("tbl_ctc.tenant_id", "tbl_cl.tenant") &
|
||||
Exp.Eq("tbl_cl.subject", ASC.Core.SecurityContext.CurrentAccount.ID.ToString()) &
|
||||
Exp.Eq("tbl_cl.subject", SecurityContext.CurrentAccount.ID.ToString()) &
|
||||
Exp.Eq("tbl_cl.action", CRMSecurity._actionRead.ID.ToString()) &
|
||||
Exp.EqColumns("tbl_cl.object", "CONCAT('ASC.CRM.Core.Entities.Company|', tbl_ctc.id)"))
|
||||
.Where(Exp.Eq("tbl_ctc.is_shared", 0))
|
||||
@ -454,7 +465,7 @@ namespace ASC.CRM.Core.Dao
|
||||
.Select("tbl_tsk.id")
|
||||
.InnerJoin("crm_contact tbl_ctc", Exp.EqColumns("tbl_tsk.contact_id", "tbl_ctc.id"))
|
||||
.InnerJoin("core_acl tbl_cl", Exp.EqColumns("tbl_ctc.tenant_id", "tbl_cl.tenant") &
|
||||
Exp.Eq("tbl_cl.subject", ASC.Core.SecurityContext.CurrentAccount.ID.ToString()) &
|
||||
Exp.Eq("tbl_cl.subject", SecurityContext.CurrentAccount.ID.ToString()) &
|
||||
Exp.Eq("tbl_cl.action", CRMSecurity._actionRead.ID.ToString()) &
|
||||
Exp.EqColumns("tbl_cl.object", "CONCAT('ASC.CRM.Core.Entities.Person|', tbl_ctc.id)"))
|
||||
.Where(Exp.Eq("tbl_ctc.is_shared", 0))
|
||||
@ -481,7 +492,7 @@ namespace ASC.CRM.Core.Dao
|
||||
sqlQuery = Query("crm_task tbl_tsk")
|
||||
.Select("tbl_tsk.id")
|
||||
.InnerJoin("core_acl tbl_cl", Exp.EqColumns("tbl_tsk.tenant_id", "tbl_cl.tenant") &
|
||||
Exp.Eq("tbl_cl.subject", ASC.Core.SecurityContext.CurrentAccount.ID.ToString()) &
|
||||
Exp.Eq("tbl_cl.subject", SecurityContext.CurrentAccount.ID.ToString()) &
|
||||
Exp.Eq("tbl_cl.action", CRMSecurity._actionRead.ID.ToString()) &
|
||||
Exp.EqColumns("tbl_cl.object", "CONCAT('ASC.CRM.Core.Entities.Deal|', tbl_tsk.entity_id)"))
|
||||
.Where(!Exp.Eq("tbl_tsk.entity_id", 0) & Exp.Eq("tbl_tsk.entity_type", (int)EntityType.Opportunity) & Exp.Eq("tbl_tsk.contact_id", 0));
|
||||
@ -506,7 +517,7 @@ namespace ASC.CRM.Core.Dao
|
||||
sqlQuery = Query("crm_task tbl_tsk")
|
||||
.Select("tbl_tsk.id")
|
||||
.InnerJoin("core_acl tbl_cl", Exp.EqColumns("tbl_tsk.tenant_id", "tbl_cl.tenant") &
|
||||
Exp.Eq("tbl_cl.subject", ASC.Core.SecurityContext.CurrentAccount.ID.ToString()) &
|
||||
Exp.Eq("tbl_cl.subject", SecurityContext.CurrentAccount.ID.ToString()) &
|
||||
Exp.Eq("tbl_cl.action", CRMSecurity._actionRead.ID.ToString()) &
|
||||
Exp.EqColumns("tbl_cl.object", "CONCAT('ASC.CRM.Core.Entities.Cases|', tbl_tsk.entity_id)"))
|
||||
.Where(!Exp.Eq("tbl_tsk.entity_id", 0) & Exp.Eq("tbl_tsk.entity_type", (int)EntityType.Case) & Exp.Eq("tbl_tsk.contact_id", 0));
|
||||
@ -694,6 +705,10 @@ namespace ASC.CRM.Core.Dao
|
||||
|
||||
public IEnumerable<Guid> GetResponsibles(int categoryID)
|
||||
{
|
||||
|
||||
|
||||
// CRMDbContext.Tasks.Select(x=>x.ResponsibleId)
|
||||
|
||||
var q = Query("crm_task")
|
||||
.Select("responsible_id")
|
||||
.GroupBy(1);
|
||||
@ -710,15 +725,10 @@ namespace ASC.CRM.Core.Dao
|
||||
|
||||
public Dictionary<int, int> GetTasksCount(int[] contactID)
|
||||
{
|
||||
var sqlQuery = Query("crm_task")
|
||||
.Select("contact_id")
|
||||
.SelectCount()
|
||||
.Where(Exp.In("contact_id", contactID))
|
||||
.GroupBy("contact_id");
|
||||
|
||||
var sqlResult = Db.ExecuteList(sqlQuery);
|
||||
|
||||
return sqlResult.ToDictionary(item => Convert.ToInt32(item[0]), item => Convert.ToInt32(item[1]));
|
||||
return CRMDbContext.Tasks
|
||||
.Where(x => contactID.Contains(x.ContactId))
|
||||
.GroupBy(x => x.ContactId)
|
||||
.ToDictionary(x => x.Key, x => x.Count());
|
||||
}
|
||||
|
||||
public int GetTasksCount(int contactID)
|
||||
@ -781,10 +791,30 @@ namespace ASC.CRM.Core.Dao
|
||||
if (newTask.ID == 0 || Db.ExecuteScalar<int>(Query("crm_task").SelectCount().Where(Exp.Eq("id", newTask.ID))) == 0)
|
||||
{
|
||||
newTask.CreateOn = DateTime.UtcNow;
|
||||
newTask.CreateBy = ASC.Core.SecurityContext.CurrentAccount.ID;
|
||||
newTask.CreateBy = SecurityContext.CurrentAccount.ID;
|
||||
|
||||
newTask.LastModifedOn = DateTime.UtcNow;
|
||||
newTask.LastModifedBy = ASC.Core.SecurityContext.CurrentAccount.ID;
|
||||
newTask.LastModifedBy = SecurityContext.CurrentAccount.ID;
|
||||
|
||||
new DbTask
|
||||
{
|
||||
Title = newTask.Title,
|
||||
Description = newTask.Description,
|
||||
Deadline = TenantUtil.DateTimeToUtc(newTask.DeadLine),
|
||||
ResponsibleId = newTask.ResponsibleID,
|
||||
ContactId = newTask.ContactID,
|
||||
EntityType = newTask.EntityType,
|
||||
EntityId = newTask.EntityID,
|
||||
IsClosed = newTask.IsClosed,
|
||||
CategoryId = newTask.CategoryID,
|
||||
CreateOn = newTask.CreateOn,
|
||||
CreateBy = newTask.CreateBy,
|
||||
LastModifedOn = newTask.LastModifedOn,
|
||||
LastModifedBy = newTask.LastModifedBy,
|
||||
AlertValue = newTask.AlertValue,
|
||||
TenantId = TenantID
|
||||
};
|
||||
|
||||
|
||||
newTask.ID = Db.ExecuteScalar<int>(
|
||||
Insert("crm_task")
|
||||
@ -817,7 +847,7 @@ namespace ASC.CRM.Core.Dao
|
||||
newTask.CreateBy = oldTask.CreateBy;
|
||||
|
||||
newTask.LastModifedOn = DateTime.UtcNow;
|
||||
newTask.LastModifedBy = ASC.Core.SecurityContext.CurrentAccount.ID;
|
||||
newTask.LastModifedBy = SecurityContext.CurrentAccount.ID;
|
||||
|
||||
newTask.IsClosed = oldTask.IsClosed;
|
||||
|
||||
@ -838,7 +868,8 @@ namespace ASC.CRM.Core.Dao
|
||||
.Where(Exp.Eq("id", newTask.ID)));
|
||||
}
|
||||
|
||||
FactoryIndexer<TasksWrapper>.IndexAsync(newTask);
|
||||
FactoryIndexer.IndexAsync(newTask);
|
||||
|
||||
return newTask;
|
||||
}
|
||||
|
||||
@ -854,35 +885,41 @@ namespace ASC.CRM.Core.Dao
|
||||
newTask.CategoryID == 0)
|
||||
throw new ArgumentException();
|
||||
|
||||
var result = Db.ExecuteScalar<int>(
|
||||
Insert("crm_task")
|
||||
.InColumnValue("id", 0)
|
||||
.InColumnValue("title", newTask.Title)
|
||||
.InColumnValue("description", newTask.Description)
|
||||
.InColumnValue("deadline", TenantUtil.DateTimeToUtc(newTask.DeadLine))
|
||||
.InColumnValue("responsible_id", newTask.ResponsibleID)
|
||||
.InColumnValue("contact_id", newTask.ContactID)
|
||||
.InColumnValue("entity_type", (int)newTask.EntityType)
|
||||
.InColumnValue("entity_id", newTask.EntityID)
|
||||
.InColumnValue("is_closed", newTask.IsClosed)
|
||||
.InColumnValue("category_id", newTask.CategoryID)
|
||||
.InColumnValue("create_on", newTask.CreateOn == DateTime.MinValue ? DateTime.UtcNow : newTask.CreateOn)
|
||||
.InColumnValue("create_by", ASC.Core.SecurityContext.CurrentAccount.ID)
|
||||
.InColumnValue("last_modifed_on", newTask.CreateOn == DateTime.MinValue ? DateTime.UtcNow : newTask.CreateOn)
|
||||
.InColumnValue("last_modifed_by", ASC.Core.SecurityContext.CurrentAccount.ID)
|
||||
.InColumnValue("alert_value", (int)newTask.AlertValue)
|
||||
.Identity(1, 0, true));
|
||||
var dbTask = new DbTask
|
||||
{
|
||||
Title = newTask.Title,
|
||||
Description = newTask.Description,
|
||||
Deadline = TenantUtil.DateTimeToUtc(newTask.DeadLine),
|
||||
ResponsibleId = newTask.ResponsibleID,
|
||||
ContactId = newTask.ContactID,
|
||||
EntityType = newTask.EntityType,
|
||||
EntityId = newTask.EntityID,
|
||||
IsClosed = newTask.IsClosed,
|
||||
CategoryId = newTask.CategoryID,
|
||||
CreateOn = newTask.CreateOn == DateTime.MinValue ? DateTime.UtcNow : newTask.CreateOn,
|
||||
CreateBy = SecurityContext.CurrentAccount.ID,
|
||||
LastModifedOn = newTask.CreateOn == DateTime.MinValue ? DateTime.UtcNow : newTask.CreateOn,
|
||||
LastModifedBy = SecurityContext.CurrentAccount.ID,
|
||||
AlertValue = newTask.AlertValue,
|
||||
TenantId = TenantID
|
||||
};
|
||||
|
||||
newTask.ID = result;
|
||||
FactoryIndexer<TasksWrapper>.IndexAsync(newTask);
|
||||
CRMDbContext.Tasks.Add(dbTask);
|
||||
|
||||
return result;
|
||||
CRMDbContext.SaveChanges();
|
||||
|
||||
newTask.ID = dbTask.Id;
|
||||
|
||||
FactoryIndexer.IndexAsync(newTask);
|
||||
|
||||
return newTask.ID;
|
||||
}
|
||||
|
||||
public virtual int[] SaveTaskList(List<Task> items)
|
||||
{
|
||||
using (var tx = Db.BeginTransaction())
|
||||
{
|
||||
|
||||
using var tx = CRMDbContext.Database.BeginTransaction();
|
||||
|
||||
var result = new List<int>();
|
||||
|
||||
foreach (var item in items)
|
||||
@ -890,11 +927,12 @@ namespace ASC.CRM.Core.Dao
|
||||
result.Add(SaveTaskInDb(item));
|
||||
}
|
||||
|
||||
CRMDbContext.SaveChanges();
|
||||
|
||||
tx.Commit();
|
||||
|
||||
return result.ToArray();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public virtual void DeleteTask(int taskID)
|
||||
@ -905,10 +943,11 @@ namespace ASC.CRM.Core.Dao
|
||||
|
||||
CRMSecurity.DemandEdit(task);
|
||||
|
||||
Db.ExecuteNonQuery(Delete("crm_task").Where("id", taskID));
|
||||
CRMDbContext.Tasks.Remove(new DbTask { Id = taskID });
|
||||
|
||||
_cache.Remove(new Regex(TenantID.ToString(CultureInfo.InvariantCulture) + "tasks.*"));
|
||||
FactoryIndexer<TasksWrapper>.DeleteAsync(task);
|
||||
|
||||
FactoryIndexer.DeleteAsync(task);
|
||||
}
|
||||
|
||||
public List<Task> CreateByTemplate(List<TaskTemplate> templateItems, EntityType entityType, int entityID)
|
||||
@ -917,8 +956,8 @@ namespace ASC.CRM.Core.Dao
|
||||
|
||||
var result = new List<Task>();
|
||||
|
||||
using (var tx = Db.BeginTransaction())
|
||||
{
|
||||
using var tx = CRMDbContext.Database.BeginTransaction();
|
||||
|
||||
foreach (var templateItem in templateItems)
|
||||
{
|
||||
var task = new Task
|
||||
@ -955,41 +994,23 @@ namespace ASC.CRM.Core.Dao
|
||||
|
||||
result.Add(task);
|
||||
|
||||
Db.ExecuteNonQuery(Insert("crm_task_template_task")
|
||||
.InColumnValue("task_id", task.ID)
|
||||
.InColumnValue("task_template_id", templateItem.ID));
|
||||
|
||||
CRMDbContext.TaskTemplateTask.Add(new DbTaskTemplateTask
|
||||
{
|
||||
TaskId = task.ID,
|
||||
TaskTemplateId = templateItem.ID,
|
||||
TenantId = TenantID
|
||||
});
|
||||
}
|
||||
|
||||
tx.Commit();
|
||||
}
|
||||
|
||||
CRMDbContext.SaveChanges();
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
#region Private Methods
|
||||
|
||||
private static Task ToTask(object[] row)
|
||||
{
|
||||
return new Task
|
||||
{
|
||||
ID = Convert.ToInt32(row[0]),
|
||||
ContactID = Convert.ToInt32(row[1]),
|
||||
Title = Convert.ToString(row[2]),
|
||||
Description = Convert.ToString(row[3]),
|
||||
DeadLine = TenantUtil.DateTimeFromUtc(Convert.ToDateTime(row[4])),
|
||||
ResponsibleID = ToGuid(row[5]),
|
||||
IsClosed = Convert.ToBoolean(row[6]),
|
||||
CategoryID = Convert.ToInt32(row[7]),
|
||||
EntityID = Convert.ToInt32(row[8]),
|
||||
EntityType = (EntityType)Convert.ToInt32(row[9]),
|
||||
CreateOn = TenantUtil.DateTimeFromUtc(Convert.ToDateTime(row[10])),
|
||||
CreateBy = ToGuid(row[11]),
|
||||
AlertValue = Convert.ToInt32(row[12])
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
private String[] GetTaskColumnsTable(String alias)
|
||||
{
|
||||
if (!String.IsNullOrEmpty(alias))
|
||||
@ -1017,34 +1038,34 @@ namespace ASC.CRM.Core.Dao
|
||||
return result.ConvertAll(item => String.Concat(alias, item)).ToArray();
|
||||
}
|
||||
|
||||
private SqlQuery GetTaskQuery(Exp where, String alias)
|
||||
{
|
||||
//private SqlQuery GetTaskQuery(Exp where, String alias)
|
||||
//{
|
||||
|
||||
var sqlQuery = Query("crm_task");
|
||||
// var sqlQuery = Query("crm_task");
|
||||
|
||||
if (!String.IsNullOrEmpty(alias))
|
||||
{
|
||||
sqlQuery = new SqlQuery(String.Concat("crm_task ", alias))
|
||||
.Where(Exp.Eq(alias + ".tenant_id", TenantID));
|
||||
sqlQuery.Select(GetTaskColumnsTable(alias));
|
||||
// if (!String.IsNullOrEmpty(alias))
|
||||
// {
|
||||
// sqlQuery = new SqlQuery(String.Concat("crm_task ", alias))
|
||||
// .Where(Exp.Eq(alias + ".tenant_id", TenantID));
|
||||
// sqlQuery.Select(GetTaskColumnsTable(alias));
|
||||
|
||||
}
|
||||
else
|
||||
sqlQuery.Select(GetTaskColumnsTable(String.Empty));
|
||||
// }
|
||||
// else
|
||||
// sqlQuery.Select(GetTaskColumnsTable(String.Empty));
|
||||
|
||||
|
||||
if (where != null)
|
||||
sqlQuery.Where(where);
|
||||
// if (where != null)
|
||||
// sqlQuery.Where(where);
|
||||
|
||||
return sqlQuery;
|
||||
// return sqlQuery;
|
||||
|
||||
}
|
||||
//}
|
||||
|
||||
private SqlQuery GetTaskQuery(Exp where)
|
||||
{
|
||||
return GetTaskQuery(where, String.Empty);
|
||||
//private SqlQuery GetTaskQuery(Exp where)
|
||||
//{
|
||||
// return GetTaskQuery(where, String.Empty);
|
||||
|
||||
}
|
||||
//}
|
||||
|
||||
|
||||
#endregion
|
||||
@ -1063,9 +1084,6 @@ namespace ASC.CRM.Core.Dao
|
||||
}
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Test method
|
||||
/// </summary>
|
||||
@ -1073,10 +1091,16 @@ namespace ASC.CRM.Core.Dao
|
||||
/// <param name="creationDate"></param>
|
||||
public void SetTaskCreationDate(int taskId, DateTime creationDate)
|
||||
{
|
||||
Db.ExecuteNonQuery(
|
||||
Update("crm_task")
|
||||
.Set("create_on", TenantUtil.DateTimeToUtc(creationDate))
|
||||
.Where(Exp.Eq("id", taskId)));
|
||||
DbTask entity = new DbTask()
|
||||
{
|
||||
Id = taskId,
|
||||
CreateOn = TenantUtil.DateTimeToUtc(creationDate)
|
||||
};
|
||||
|
||||
CRMDbContext.Tasks.Update(entity);
|
||||
|
||||
CRMDbContext.SaveChanges();
|
||||
|
||||
// Delete relative keys
|
||||
_cache.Remove(new Regex(TenantID.ToString(CultureInfo.InvariantCulture) + "tasks.*"));
|
||||
}
|
||||
@ -1088,12 +1112,23 @@ namespace ASC.CRM.Core.Dao
|
||||
/// <param name="lastModifedDate"></param>
|
||||
public void SetTaskLastModifedDate(int taskId, DateTime lastModifedDate)
|
||||
{
|
||||
Db.ExecuteNonQuery(
|
||||
Update("crm_task")
|
||||
.Set("last_modifed_on", TenantUtil.DateTimeToUtc(lastModifedDate))
|
||||
.Where(Exp.Eq("id", taskId)));
|
||||
DbTask entity = new DbTask()
|
||||
{
|
||||
Id = taskId,
|
||||
LastModifedOn = TenantUtil.DateTimeToUtc(lastModifedDate)
|
||||
};
|
||||
|
||||
CRMDbContext.Tasks.Update(entity);
|
||||
|
||||
CRMDbContext.SaveChanges();
|
||||
|
||||
// Delete relative keys
|
||||
_cache.Remove(new Regex(TenantID.ToString(CultureInfo.InvariantCulture) + "tasks.*"));
|
||||
}
|
||||
|
||||
public Task ToTask(DbTask dbTask)
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -23,95 +23,59 @@
|
||||
*
|
||||
*/
|
||||
|
||||
|
||||
#region Import
|
||||
|
||||
using ASC.Core;
|
||||
using ASC.Core.Common.EF;
|
||||
using ASC.CRM.Core.EF;
|
||||
using ASC.CRM.Core.Entities;
|
||||
using ASC.CRM.Core.Enums;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using ASC.Common.Data.Sql;
|
||||
using ASC.Common.Data.Sql.Expressions;
|
||||
using ASC.Core.Tenants;
|
||||
using ASC.CRM.Core.Entities;
|
||||
|
||||
#endregion
|
||||
using System.Linq;
|
||||
|
||||
namespace ASC.CRM.Core.Dao
|
||||
{
|
||||
public class CachedTaskTemplateContainerDao : TaskTemplateContainerDao
|
||||
{
|
||||
#region Constructor
|
||||
|
||||
public CachedTaskTemplateContainerDao(int tenantID)
|
||||
: base(tenantID)
|
||||
{
|
||||
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
}
|
||||
|
||||
public class CachedTaskTemplateDao : TaskTemplateDao
|
||||
{
|
||||
|
||||
#region Constructor
|
||||
|
||||
public CachedTaskTemplateDao(int tenantID)
|
||||
: base(tenantID)
|
||||
{
|
||||
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
}
|
||||
|
||||
public class TaskTemplateContainerDao : AbstractDao
|
||||
{
|
||||
#region Constructor
|
||||
|
||||
public TaskTemplateContainerDao(int tenantID)
|
||||
: base(tenantID)
|
||||
public TaskTemplateContainerDao(
|
||||
DbContextManager<CRMDbContext> dbContextManager,
|
||||
TenantManager tenantManager,
|
||||
SecurityContext securityContext)
|
||||
: base(dbContextManager,
|
||||
tenantManager,
|
||||
securityContext)
|
||||
{
|
||||
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region Methods
|
||||
|
||||
public virtual int SaveOrUpdate(TaskTemplateContainer item)
|
||||
{
|
||||
if (item.ID == 0 && Db.ExecuteScalar<int>(Query("crm_task_template_container").SelectCount().Where(Exp.Eq("id", item.ID))) == 0)
|
||||
var dbTaskTemplateContainer = new DbTaskTemplateContainer
|
||||
{
|
||||
Id = item.ID,
|
||||
Title = item.Title,
|
||||
EntityType = item.EntityType,
|
||||
CreateOn = DateTime.UtcNow,
|
||||
CreateBy = SecurityContext.CurrentAccount.ID,
|
||||
LastModifedOn = DateTime.UtcNow,
|
||||
LastModifedBy = SecurityContext.CurrentAccount.ID,
|
||||
TenantId = TenantID
|
||||
};
|
||||
|
||||
item.ID = Db.ExecuteScalar<int>(
|
||||
Insert("crm_task_template_container")
|
||||
.InColumnValue("id", 0)
|
||||
.InColumnValue("title", item.Title)
|
||||
.InColumnValue("entity_type", (int)item.EntityType)
|
||||
.InColumnValue("create_on", DateTime.UtcNow)
|
||||
.InColumnValue("create_by", ASC.Core.SecurityContext.CurrentAccount.ID)
|
||||
.InColumnValue("last_modifed_on", DateTime.UtcNow)
|
||||
.InColumnValue("last_modifed_by", ASC.Core.SecurityContext.CurrentAccount.ID)
|
||||
.Identity(1, 0, true));
|
||||
if (item.ID == 0 && Query(CRMDbContext.TaskTemplateContainer).Where(x => x.Id == item.ID).Any())
|
||||
{
|
||||
CRMDbContext.TaskTemplateContainer.Add(dbTaskTemplateContainer);
|
||||
|
||||
item.ID = dbTaskTemplateContainer.Id;
|
||||
|
||||
CRMDbContext.SaveChanges();
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
CRMDbContext.TaskTemplateContainer.Attach(dbTaskTemplateContainer);
|
||||
|
||||
Db.ExecuteScalar<int>(
|
||||
Update("crm_task_template_container")
|
||||
.Set("title", item.Title)
|
||||
.Set("entity_type", (int)item.EntityType)
|
||||
.Set("last_modifed_on", DateTime.UtcNow)
|
||||
.Set("last_modifed_by", ASC.Core.SecurityContext.CurrentAccount.ID)
|
||||
.Where(Exp.Eq("id", item.ID)));
|
||||
|
||||
|
||||
|
||||
CRMDbContext.SaveChanges();
|
||||
}
|
||||
|
||||
|
||||
@ -120,24 +84,23 @@ namespace ASC.CRM.Core.Dao
|
||||
|
||||
public virtual void Delete(int id)
|
||||
{
|
||||
|
||||
if (id <= 0)
|
||||
throw new ArgumentException();
|
||||
|
||||
Db.ExecuteNonQuery(Delete("crm_task_template_container").Where("id", id));
|
||||
var itemToDelete = new DbTaskTemplateContainer { Id = id };
|
||||
|
||||
CRMDbContext.TaskTemplateContainer.Attach(itemToDelete);
|
||||
CRMDbContext.TaskTemplateContainer.Remove(itemToDelete);
|
||||
|
||||
CRMDbContext.SaveChanges();
|
||||
}
|
||||
|
||||
public virtual TaskTemplateContainer GetByID(int id)
|
||||
{
|
||||
|
||||
if (id <= 0)
|
||||
throw new ArgumentException();
|
||||
|
||||
var result = Db.ExecuteList(GetQuery(null).Where(Exp.Eq("id", id))).ConvertAll(row => ToObject(row));
|
||||
|
||||
if (result.Count == 0) return null;
|
||||
|
||||
return result[0];
|
||||
return ToObject(Query(CRMDbContext.TaskTemplateContainer).FirstOrDefault(x => x.Id == id));
|
||||
}
|
||||
|
||||
public virtual List<TaskTemplateContainer> GetItems(EntityType entityType)
|
||||
@ -145,91 +108,81 @@ namespace ASC.CRM.Core.Dao
|
||||
if (!_supportedEntityType.Contains(entityType))
|
||||
throw new ArgumentException("", entityType.ToString());
|
||||
|
||||
return Db.ExecuteList(GetQuery(Exp.Eq("entity_type", (int)entityType)))
|
||||
.ConvertAll(row => ToObject(row));
|
||||
return Query(CRMDbContext.TaskTemplateContainer)
|
||||
.Where(x => x.EntityType == entityType)
|
||||
.ToList()
|
||||
.ConvertAll(ToObject);
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
protected SqlQuery GetQuery(Exp where)
|
||||
protected TaskTemplateContainer ToObject(DbTaskTemplateContainer dbTaskTemplateContainer)
|
||||
{
|
||||
if (dbTaskTemplateContainer == null) return null;
|
||||
|
||||
var sqlQuery = Query("crm_task_template_container")
|
||||
.Select("id",
|
||||
"title",
|
||||
"entity_type");
|
||||
|
||||
if (where != null)
|
||||
sqlQuery.Where(where);
|
||||
|
||||
return sqlQuery;
|
||||
}
|
||||
|
||||
protected TaskTemplateContainer ToObject(object[] row)
|
||||
{
|
||||
return new TaskTemplateContainer
|
||||
{
|
||||
ID = Convert.ToInt32(row[0]),
|
||||
Title = Convert.ToString(row[1]),
|
||||
EntityType = (EntityType)Convert.ToInt32(row[2])
|
||||
ID = dbTaskTemplateContainer.Id,
|
||||
Title = dbTaskTemplateContainer.Title,
|
||||
EntityType = dbTaskTemplateContainer.EntityType
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
public class TaskTemplateDao : AbstractDao
|
||||
{
|
||||
#region Constructor
|
||||
|
||||
public TaskTemplateDao(int tenantID)
|
||||
: base(tenantID)
|
||||
public TaskTemplateDao(DbContextManager<CRMDbContext> dbContextManager,
|
||||
TenantManager tenantManager,
|
||||
SecurityContext securityContext)
|
||||
: base(dbContextManager,
|
||||
tenantManager,
|
||||
securityContext)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region Methods
|
||||
|
||||
public int SaveOrUpdate(TaskTemplate item)
|
||||
{
|
||||
if (item.ID == 0 && Db.ExecuteScalar<int>(Query("crm_task_template").SelectCount().Where(Exp.Eq("id", item.ID))) == 0)
|
||||
if (item.ID == 0)
|
||||
{
|
||||
var itemToInsert = new DbTaskTemplate
|
||||
{
|
||||
Id = item.ID,
|
||||
Title = item.Title,
|
||||
CategoryId = item.CategoryID,
|
||||
Description = item.Description,
|
||||
ResponsibleId = item.ResponsibleID,
|
||||
IsNotify = item.isNotify,
|
||||
Offset = item.Offset.Ticks,
|
||||
DeadLineIsFixed = item.DeadLineIsFixed,
|
||||
ContainerId = item.ContainerID,
|
||||
CreateOn = DateTime.UtcNow,
|
||||
CreateBy = SecurityContext.CurrentAccount.ID,
|
||||
LastModifedOn = DateTime.UtcNow,
|
||||
LastModifedBy = SecurityContext.CurrentAccount.ID,
|
||||
TenantId = TenantID
|
||||
};
|
||||
|
||||
item.ID = Db.ExecuteScalar<int>(
|
||||
Insert("crm_task_template")
|
||||
.InColumnValue("id", 0)
|
||||
.InColumnValue("title", item.Title)
|
||||
.InColumnValue("category_id", item.CategoryID)
|
||||
.InColumnValue("description", item.Description)
|
||||
.InColumnValue("responsible_id", item.ResponsibleID)
|
||||
.InColumnValue("is_notify", item.isNotify)
|
||||
.InColumnValue("offset", item.Offset.Ticks)
|
||||
.InColumnValue("deadLine_is_fixed", item.DeadLineIsFixed)
|
||||
.InColumnValue("container_id", item.ContainerID)
|
||||
.InColumnValue("create_on", DateTime.UtcNow)
|
||||
.InColumnValue("create_by", ASC.Core.SecurityContext.CurrentAccount.ID)
|
||||
.InColumnValue("last_modifed_on", DateTime.UtcNow)
|
||||
.InColumnValue("last_modifed_by", ASC.Core.SecurityContext.CurrentAccount.ID)
|
||||
.Identity(1, 0, true));
|
||||
|
||||
CRMDbContext.TaskTemplates.Add(itemToInsert);
|
||||
CRMDbContext.SaveChanges();
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
Db.ExecuteNonQuery(
|
||||
Update("crm_task_template")
|
||||
.Set("title", item.Title)
|
||||
.Set("category_id", item.CategoryID)
|
||||
.Set("description", item.Description)
|
||||
.Set("responsible_id", item.ResponsibleID)
|
||||
.Set("is_notify", item.isNotify)
|
||||
.Set("offset", item.Offset.Ticks)
|
||||
.Set("deadLine_is_fixed", item.DeadLineIsFixed)
|
||||
.Set("container_id", item.ContainerID)
|
||||
.Set("last_modifed_on", DateTime.UtcNow)
|
||||
.Set("last_modifed_by", ASC.Core.SecurityContext.CurrentAccount.ID)
|
||||
.Where("id", item.ID));
|
||||
//Db.ExecuteNonQuery(
|
||||
// Update("crm_task_template")
|
||||
// .Set("title", item.Title)
|
||||
// .Set("category_id", item.CategoryID)
|
||||
// .Set("description", item.Description)
|
||||
// .Set("responsible_id", item.ResponsibleID)
|
||||
// .Set("is_notify", item.isNotify)
|
||||
// .Set("offset", item.Offset.Ticks)
|
||||
// .Set("deadLine_is_fixed", item.DeadLineIsFixed)
|
||||
// .Set("container_id", item.ContainerID)
|
||||
// .Set("last_modifed_on", DateTime.UtcNow)
|
||||
// .Set("last_modifed_by", SecurityContext.CurrentAccount.ID)
|
||||
// .Where("id", item.ID));
|
||||
|
||||
//CRMDbContext.TaskTemplates.Add(itemToInsert);
|
||||
//CRMDbContext.SaveChanges();
|
||||
}
|
||||
|
||||
return item.ID;
|
||||
@ -237,36 +190,47 @@ namespace ASC.CRM.Core.Dao
|
||||
|
||||
public TaskTemplate GetNext(int taskID)
|
||||
{
|
||||
using (var tx = Db.BeginTransaction())
|
||||
using var tx = CRMDbContext.Database.BeginTransaction();
|
||||
|
||||
var temp = Query(CRMDbContext.TaskTemplateTask)
|
||||
.Join(CRMDbContext.TaskTemplates,
|
||||
x => new { x.TenantId, x.TaskTemplateId },
|
||||
y => new { y.TenantId, y.Id },
|
||||
(x, y) => new
|
||||
{
|
||||
var sqlResult = Db.ExecuteList(
|
||||
Query("crm_task_template_task tblTTT")
|
||||
.Select("tblTT.container_id")
|
||||
.Select("tblTT.sort_order")
|
||||
.LeftOuterJoin("crm_task_template tblTT", Exp.EqColumns("tblTT.tenant_id", "tblTTT.tenant_id") & Exp.EqColumns("tblTT.id", "tblTTT.task_template_id"))
|
||||
.Where(Exp.Eq("tblTTT.task_id", taskID) & Exp.Eq("tblTT.tenant_id", TenantID)));
|
||||
x, y
|
||||
});
|
||||
|
||||
if (sqlResult.Count == 0) return null;
|
||||
//var sqlResult = Db.ExecuteList(
|
||||
// Query("crm_task_template_task tblTTT")
|
||||
// .Select("tblTT.container_id")
|
||||
// .Select("tblTT.sort_order")
|
||||
// .LeftOuterJoin("crm_task_template tblTT", Exp.EqColumns("tblTT.tenant_id", "tblTTT.tenant_id") & Exp.EqColumns("tblTT.id", "tblTTT.task_template_id"))
|
||||
// .Where(Exp.Eq("tblTTT.task_id", taskID) & Exp.Eq("tblTT.tenant_id", TenantID)));
|
||||
|
||||
var result = Db.ExecuteList(GetQuery(Exp.Eq("container_id", sqlResult[0][0]) &
|
||||
Exp.Gt("sort_order", sqlResult[0][1]) &
|
||||
Exp.Eq("deadLine_is_fixed", false)).SetMaxResults(1)).ConvertAll(
|
||||
row => ToObject(row));
|
||||
//if (sqlResult.Count == 0) return null;
|
||||
|
||||
Db.ExecuteNonQuery(Delete("crm_task_template_task").Where(Exp.Eq("task_id", taskID)));
|
||||
//var result = Db.ExecuteList(GetQuery(Exp.Eq("container_id", sqlResult[0][0]) &
|
||||
// Exp.Gt("sort_order", sqlResult[0][1]) &
|
||||
// Exp.Eq("deadLine_is_fixed", false)).SetMaxResults(1)).ConvertAll(
|
||||
// row => ToObject(row));
|
||||
|
||||
//Db.ExecuteNonQuery(Delete("crm_task_template_task").Where(Exp.Eq("task_id", taskID)));
|
||||
|
||||
tx.Commit();
|
||||
|
||||
if (result.Count == 0) return null;
|
||||
// if (result.Count == 0) return null;
|
||||
|
||||
// return result[0];
|
||||
|
||||
return result[0];
|
||||
}
|
||||
}
|
||||
|
||||
public List<TaskTemplate> GetAll()
|
||||
{
|
||||
return Db.ExecuteList(GetQuery(null))
|
||||
.ConvertAll(row => ToObject(row));
|
||||
return Query(CRMDbContext.TaskTemplates)
|
||||
.OrderBy(x => x.SortOrder)
|
||||
.ToList()
|
||||
.ConvertAll(ToObject);
|
||||
}
|
||||
|
||||
public List<TaskTemplate> GetList(int containerID)
|
||||
@ -274,8 +238,11 @@ namespace ASC.CRM.Core.Dao
|
||||
if (containerID <= 0)
|
||||
throw new NotImplementedException();
|
||||
|
||||
return Db.ExecuteList(GetQuery(Exp.Eq("container_id", containerID)))
|
||||
.ConvertAll(row => ToObject(row));
|
||||
return Query(CRMDbContext.TaskTemplates)
|
||||
.Where(x => x.ContainerId == containerID)
|
||||
.OrderBy(x=> x.SortOrder)
|
||||
.ToList()
|
||||
.ConvertAll(ToObject);
|
||||
}
|
||||
|
||||
public virtual TaskTemplate GetByID(int id)
|
||||
@ -283,12 +250,7 @@ namespace ASC.CRM.Core.Dao
|
||||
if (id <= 0)
|
||||
throw new NotImplementedException();
|
||||
|
||||
var items = Db.ExecuteList(GetQuery(Exp.Eq("id", id))).ConvertAll(row => ToObject(row));
|
||||
|
||||
if (items.Count == 0)
|
||||
return null;
|
||||
|
||||
return items[0];
|
||||
return ToObject(CRMDbContext.TaskTemplates.FirstOrDefault(x => x.Id == id));
|
||||
}
|
||||
|
||||
public virtual void Delete(int id)
|
||||
@ -296,53 +258,34 @@ namespace ASC.CRM.Core.Dao
|
||||
if (id <= 0)
|
||||
throw new NotImplementedException();
|
||||
|
||||
Db.ExecuteNonQuery(Delete("crm_task_template").Where("id", id));
|
||||
var itemToRemove = new DbTaskTemplate
|
||||
{
|
||||
Id = id
|
||||
};
|
||||
|
||||
CRMDbContext.Entry(itemToRemove).State = EntityState.Deleted;
|
||||
CRMDbContext.SaveChanges();
|
||||
}
|
||||
|
||||
protected TaskTemplate ToObject(object[] row)
|
||||
protected TaskTemplate ToObject(DbTaskTemplate dbTaskTemplate)
|
||||
{
|
||||
if (dbTaskTemplate == null) return null;
|
||||
|
||||
return new TaskTemplate
|
||||
{
|
||||
ID = Convert.ToInt32(row[0]),
|
||||
Title = Convert.ToString(row[1]),
|
||||
CategoryID = Convert.ToInt32(row[2]),
|
||||
Description = Convert.ToString(row[3]),
|
||||
ResponsibleID = ToGuid(row[4]),
|
||||
isNotify = Convert.ToBoolean(row[5]),
|
||||
Offset = TimeSpan.FromTicks((long)row[6]),
|
||||
DeadLineIsFixed = Convert.ToBoolean(row[7]),
|
||||
ContainerID = Convert.ToInt32(row[8]),
|
||||
CreateOn = TenantUtil.DateTimeFromUtc(Convert.ToDateTime(row[9])),
|
||||
CreateBy = ToGuid(row[10])
|
||||
ID = dbTaskTemplate.Id,
|
||||
Title = dbTaskTemplate.Title,
|
||||
CategoryID = dbTaskTemplate.CategoryId,
|
||||
Description = dbTaskTemplate.Description,
|
||||
ResponsibleID = dbTaskTemplate.ResponsibleId,
|
||||
isNotify = dbTaskTemplate.IsNotify,
|
||||
Offset = TimeSpan.FromTicks(dbTaskTemplate.Offset),
|
||||
DeadLineIsFixed = dbTaskTemplate.DeadLineIsFixed,
|
||||
ContainerID = dbTaskTemplate.ContainerId,
|
||||
CreateOn = dbTaskTemplate.CreateOn,
|
||||
CreateBy = dbTaskTemplate.CreateBy
|
||||
};
|
||||
}
|
||||
|
||||
protected SqlQuery GetQuery(Exp where)
|
||||
{
|
||||
var sqlQuery = Query("crm_task_template")
|
||||
.Select("id",
|
||||
"title",
|
||||
"category_id",
|
||||
"description",
|
||||
"responsible_id",
|
||||
"is_notify",
|
||||
"offset",
|
||||
"deadLine_is_fixed",
|
||||
"container_id",
|
||||
"create_on",
|
||||
"create_by"
|
||||
);
|
||||
|
||||
if (where != null)
|
||||
sqlQuery.Where(where);
|
||||
|
||||
sqlQuery.OrderBy("sort_order", true);
|
||||
|
||||
return sqlQuery;
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
}
|
||||
|
||||
}
|
@ -7,42 +7,33 @@ namespace ASC.CRM.Core.EF
|
||||
{
|
||||
public partial class CRMDbContext : BaseDbContext
|
||||
{
|
||||
//public CRMDbContext()
|
||||
//{
|
||||
//}
|
||||
|
||||
//public CRMDbContext(DbContextOptions<CRMDbContext> options)
|
||||
// : base(options)
|
||||
//{
|
||||
//}
|
||||
|
||||
public virtual DbSet<CrmCase> CrmCase { get; set; }
|
||||
public virtual DbSet<CrmContact> CrmContact { get; set; }
|
||||
public virtual DbSet<CrmContactInfo> CrmContactInfo { get; set; }
|
||||
public virtual DbSet<CrmCurrencyInfo> CrmCurrencyInfo { get; set; }
|
||||
public virtual DbSet<CrmCurrencyRate> CrmCurrencyRate { get; set; }
|
||||
public virtual DbSet<CrmDeal> CrmDeal { get; set; }
|
||||
public virtual DbSet<CrmDealMilestone> CrmDealMilestone { get; set; }
|
||||
public virtual DbSet<CrmEntityContact> CrmEntityContact { get; set; }
|
||||
public virtual DbSet<CrmEntityTag> CrmEntityTag { get; set; }
|
||||
public virtual DbSet<CrmFieldDescription> CrmFieldDescription { get; set; }
|
||||
public virtual DbSet<CrmFieldValue> CrmFieldValue { get; set; }
|
||||
public virtual DbSet<CrmInvoice> CrmInvoice { get; set; }
|
||||
public virtual DbSet<CrmInvoiceItem> CrmInvoiceItem { get; set; }
|
||||
public virtual DbSet<CrmInvoiceLine> CrmInvoiceLine { get; set; }
|
||||
public virtual DbSet<CrmInvoiceTax> CrmInvoiceTax { get; set; }
|
||||
public virtual DbSet<CrmListItem> CrmListItem { get; set; }
|
||||
public virtual DbSet<CrmOrganisationLogo> CrmOrganisationLogo { get; set; }
|
||||
public virtual DbSet<CrmProjects> CrmProjects { get; set; }
|
||||
public virtual DbSet<CrmRelationshipEvent> CrmRelationshipEvent { get; set; }
|
||||
public virtual DbSet<CrmReportFile> CrmReportFile { get; set; }
|
||||
public virtual DbSet<CrmTag> CrmTag { get; set; }
|
||||
public virtual DbSet<CrmTask> CrmTask { get; set; }
|
||||
public virtual DbSet<CrmTaskTemplate> CrmTaskTemplate { get; set; }
|
||||
public virtual DbSet<CrmTaskTemplateContainer> CrmTaskTemplateContainer { get; set; }
|
||||
public virtual DbSet<CrmTaskTemplateTask> CrmTaskTemplateTask { get; set; }
|
||||
public virtual DbSet<CrmVoipCalls> CrmVoipCalls { get; set; }
|
||||
public virtual DbSet<CrmVoipNumber> CrmVoipNumber { get; set; }
|
||||
public virtual DbSet<DbCase> Cases { get; set; }
|
||||
public virtual DbSet<DbContact> Contacts { get; set; }
|
||||
public virtual DbSet<DbContactInfo> ContactsInfo { get; set; }
|
||||
public virtual DbSet<DbCurrencyInfo> CurrencyInfo { get; set; }
|
||||
public virtual DbSet<DbCurrencyRate> CurrencyRate { get; set; }
|
||||
public virtual DbSet<DbDeal> Deals { get; set; }
|
||||
public virtual DbSet<DbDealMilestone> DealMilestones { get; set; }
|
||||
public virtual DbSet<DbEntityContact> EntityContact { get; set; }
|
||||
public virtual DbSet<DbEntityTag> EntityTags { get; set; }
|
||||
public virtual DbSet<DbFieldDescription> FieldDescription { get; set; }
|
||||
public virtual DbSet<DbFieldValue> FieldValue { get; set; }
|
||||
public virtual DbSet<DbInvoice> Invoices { get; set; }
|
||||
public virtual DbSet<DbInvoiceItem> InvoiceItem { get; set; }
|
||||
public virtual DbSet<DbInvoiceLine> InvoiceLine { get; set; }
|
||||
public virtual DbSet<DbInvoiceTax> InvoiceTax { get; set; }
|
||||
public virtual DbSet<DbListItem> ListItem { get; set; }
|
||||
public virtual DbSet<DbOrganisationLogo> OrganisationLogo { get; set; }
|
||||
public virtual DbSet<DbProjects> Projects { get; set; }
|
||||
public virtual DbSet<DbRelationshipEvent> RelationshipEvent { get; set; }
|
||||
public virtual DbSet<DbReportFile> ReportFile { get; set; }
|
||||
public virtual DbSet<DbTag> Tags { get; set; }
|
||||
public virtual DbSet<DbTask> Tasks { get; set; }
|
||||
public virtual DbSet<DbTaskTemplate> TaskTemplates { get; set; }
|
||||
public virtual DbSet<DbTaskTemplateContainer> TaskTemplateContainer { get; set; }
|
||||
public virtual DbSet<DbTaskTemplateTask> TaskTemplateTask { get; set; }
|
||||
public virtual DbSet<DbVoipCalls> VoipCalls { get; set; }
|
||||
public virtual DbSet<DbVoipNumber> VoipNumber { get; set; }
|
||||
|
||||
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
|
||||
{
|
||||
@ -53,7 +44,7 @@ namespace ASC.CRM.Core.EF
|
||||
|
||||
protected override void OnModelCreating(ModelBuilder modelBuilder)
|
||||
{
|
||||
modelBuilder.Entity<CrmCase>(entity =>
|
||||
modelBuilder.Entity<DbCase>(entity =>
|
||||
{
|
||||
entity.HasIndex(e => e.CreateOn)
|
||||
.HasName("create_on");
|
||||
@ -77,7 +68,7 @@ namespace ASC.CRM.Core.EF
|
||||
.HasCollation("utf8_general_ci");
|
||||
});
|
||||
|
||||
modelBuilder.Entity<CrmContact>(entity =>
|
||||
modelBuilder.Entity<DbContact>(entity =>
|
||||
{
|
||||
entity.HasIndex(e => e.CreateOn)
|
||||
.HasName("create_on");
|
||||
@ -132,7 +123,7 @@ namespace ASC.CRM.Core.EF
|
||||
.HasCollation("utf8_general_ci");
|
||||
});
|
||||
|
||||
modelBuilder.Entity<CrmContactInfo>(entity =>
|
||||
modelBuilder.Entity<DbContactInfo>(entity =>
|
||||
{
|
||||
entity.HasIndex(e => e.LastModifedOn)
|
||||
.HasName("last_modifed_on");
|
||||
@ -149,7 +140,7 @@ namespace ASC.CRM.Core.EF
|
||||
.HasCollation("utf8_general_ci");
|
||||
});
|
||||
|
||||
modelBuilder.Entity<CrmCurrencyInfo>(entity =>
|
||||
modelBuilder.Entity<DbCurrencyInfo>(entity =>
|
||||
{
|
||||
entity.HasKey(e => e.Abbreviation)
|
||||
.HasName("PRIMARY");
|
||||
@ -171,7 +162,7 @@ namespace ASC.CRM.Core.EF
|
||||
.HasCollation("utf8_general_ci");
|
||||
});
|
||||
|
||||
modelBuilder.Entity<CrmCurrencyRate>(entity =>
|
||||
modelBuilder.Entity<DbCurrencyRate>(entity =>
|
||||
{
|
||||
entity.HasIndex(e => e.FromCurrency)
|
||||
.HasName("from_currency");
|
||||
@ -196,7 +187,7 @@ namespace ASC.CRM.Core.EF
|
||||
.HasCollation("utf8_general_ci");
|
||||
});
|
||||
|
||||
modelBuilder.Entity<CrmDeal>(entity =>
|
||||
modelBuilder.Entity<DbDeal>(entity =>
|
||||
{
|
||||
entity.HasIndex(e => e.CreateOn)
|
||||
.HasName("create_on");
|
||||
@ -235,7 +226,7 @@ namespace ASC.CRM.Core.EF
|
||||
.HasCollation("utf8_general_ci");
|
||||
});
|
||||
|
||||
modelBuilder.Entity<CrmDealMilestone>(entity =>
|
||||
modelBuilder.Entity<DbDealMilestone>(entity =>
|
||||
{
|
||||
entity.HasIndex(e => e.TenantId)
|
||||
.HasName("tenant_id");
|
||||
@ -254,7 +245,7 @@ namespace ASC.CRM.Core.EF
|
||||
.HasCollation("utf8_general_ci");
|
||||
});
|
||||
|
||||
modelBuilder.Entity<CrmEntityContact>(entity =>
|
||||
modelBuilder.Entity<DbEntityContact>(entity =>
|
||||
{
|
||||
entity.HasKey(e => new { e.EntityId, e.EntityType, e.ContactId })
|
||||
.HasName("PRIMARY");
|
||||
@ -263,7 +254,7 @@ namespace ASC.CRM.Core.EF
|
||||
.HasName("IX_Contact");
|
||||
});
|
||||
|
||||
modelBuilder.Entity<CrmEntityTag>(entity =>
|
||||
modelBuilder.Entity<DbEntityTag>(entity =>
|
||||
{
|
||||
entity.HasKey(e => new { e.EntityId, e.EntityType, e.TagId })
|
||||
.HasName("PRIMARY");
|
||||
@ -272,7 +263,7 @@ namespace ASC.CRM.Core.EF
|
||||
.HasName("tag_id");
|
||||
});
|
||||
|
||||
modelBuilder.Entity<CrmFieldDescription>(entity =>
|
||||
modelBuilder.Entity<DbFieldDescription>(entity =>
|
||||
{
|
||||
entity.HasIndex(e => new { e.TenantId, e.EntityType, e.SortOrder })
|
||||
.HasName("entity_type");
|
||||
@ -286,7 +277,7 @@ namespace ASC.CRM.Core.EF
|
||||
.HasCollation("utf8_general_ci");
|
||||
});
|
||||
|
||||
modelBuilder.Entity<CrmFieldValue>(entity =>
|
||||
modelBuilder.Entity<DbFieldValue>(entity =>
|
||||
{
|
||||
entity.HasIndex(e => e.FieldId)
|
||||
.HasName("field_id");
|
||||
@ -306,7 +297,7 @@ namespace ASC.CRM.Core.EF
|
||||
.HasCollation("utf8_general_ci");
|
||||
});
|
||||
|
||||
modelBuilder.Entity<CrmInvoice>(entity =>
|
||||
modelBuilder.Entity<DbInvoice>(entity =>
|
||||
{
|
||||
entity.HasIndex(e => e.TenantId)
|
||||
.HasName("tenant_id");
|
||||
@ -358,7 +349,7 @@ namespace ASC.CRM.Core.EF
|
||||
.HasCollation("utf8_general_ci");
|
||||
});
|
||||
|
||||
modelBuilder.Entity<CrmInvoiceItem>(entity =>
|
||||
modelBuilder.Entity<DbInvoiceItem>(entity =>
|
||||
{
|
||||
entity.HasIndex(e => e.TenantId)
|
||||
.HasName("tenant_id");
|
||||
@ -388,7 +379,7 @@ namespace ASC.CRM.Core.EF
|
||||
.HasCollation("utf8_general_ci");
|
||||
});
|
||||
|
||||
modelBuilder.Entity<CrmInvoiceLine>(entity =>
|
||||
modelBuilder.Entity<DbInvoiceLine>(entity =>
|
||||
{
|
||||
entity.HasIndex(e => e.TenantId)
|
||||
.HasName("tenant_id");
|
||||
@ -398,7 +389,7 @@ namespace ASC.CRM.Core.EF
|
||||
.HasCollation("utf8_general_ci");
|
||||
});
|
||||
|
||||
modelBuilder.Entity<CrmInvoiceTax>(entity =>
|
||||
modelBuilder.Entity<DbInvoiceTax>(entity =>
|
||||
{
|
||||
entity.HasIndex(e => e.TenantId)
|
||||
.HasName("tenant_id");
|
||||
@ -420,7 +411,7 @@ namespace ASC.CRM.Core.EF
|
||||
.HasCollation("utf8_general_ci");
|
||||
});
|
||||
|
||||
modelBuilder.Entity<CrmListItem>(entity =>
|
||||
modelBuilder.Entity<DbListItem>(entity =>
|
||||
{
|
||||
entity.HasIndex(e => new { e.TenantId, e.ListType })
|
||||
.HasName("list_type");
|
||||
@ -442,7 +433,7 @@ namespace ASC.CRM.Core.EF
|
||||
.HasCollation("utf8_general_ci");
|
||||
});
|
||||
|
||||
modelBuilder.Entity<CrmOrganisationLogo>(entity =>
|
||||
modelBuilder.Entity<DbOrganisationLogo>(entity =>
|
||||
{
|
||||
entity.HasIndex(e => e.TenantId)
|
||||
.HasName("tenant_id");
|
||||
@ -456,7 +447,7 @@ namespace ASC.CRM.Core.EF
|
||||
.HasCollation("utf8_general_ci");
|
||||
});
|
||||
|
||||
modelBuilder.Entity<CrmProjects>(entity =>
|
||||
modelBuilder.Entity<DbProjects>(entity =>
|
||||
{
|
||||
entity.HasKey(e => new { e.TenantId, e.ContactId, e.ProjectId })
|
||||
.HasName("PRIMARY");
|
||||
@ -468,7 +459,7 @@ namespace ASC.CRM.Core.EF
|
||||
.HasName("project_id");
|
||||
});
|
||||
|
||||
modelBuilder.Entity<CrmRelationshipEvent>(entity =>
|
||||
modelBuilder.Entity<DbRelationshipEvent>(entity =>
|
||||
{
|
||||
entity.HasIndex(e => e.ContactId)
|
||||
.HasName("IX_Contact");
|
||||
@ -495,7 +486,7 @@ namespace ASC.CRM.Core.EF
|
||||
.HasCollation("utf8_general_ci");
|
||||
});
|
||||
|
||||
modelBuilder.Entity<CrmReportFile>(entity =>
|
||||
modelBuilder.Entity<DbReportFile>(entity =>
|
||||
{
|
||||
entity.HasKey(e => e.FileId)
|
||||
.HasName("PRIMARY");
|
||||
@ -514,7 +505,7 @@ namespace ASC.CRM.Core.EF
|
||||
.HasCollation("utf8_general_ci");
|
||||
});
|
||||
|
||||
modelBuilder.Entity<CrmTag>(entity =>
|
||||
modelBuilder.Entity<DbTag>(entity =>
|
||||
{
|
||||
entity.HasIndex(e => e.TenantId)
|
||||
.HasName("tenant_id");
|
||||
@ -524,7 +515,7 @@ namespace ASC.CRM.Core.EF
|
||||
.HasCollation("utf8_bin");
|
||||
});
|
||||
|
||||
modelBuilder.Entity<CrmTask>(entity =>
|
||||
modelBuilder.Entity<DbTask>(entity =>
|
||||
{
|
||||
entity.HasIndex(e => e.CreateOn)
|
||||
.HasName("create_on");
|
||||
@ -568,7 +559,7 @@ namespace ASC.CRM.Core.EF
|
||||
.HasCollation("utf8_general_ci");
|
||||
});
|
||||
|
||||
modelBuilder.Entity<CrmTaskTemplate>(entity =>
|
||||
modelBuilder.Entity<DbTaskTemplate>(entity =>
|
||||
{
|
||||
entity.HasIndex(e => new { e.TenantId, e.ContainerId })
|
||||
.HasName("template_id");
|
||||
@ -597,7 +588,7 @@ namespace ASC.CRM.Core.EF
|
||||
.HasCollation("utf8_general_ci");
|
||||
});
|
||||
|
||||
modelBuilder.Entity<CrmTaskTemplateContainer>(entity =>
|
||||
modelBuilder.Entity<DbTaskTemplateContainer>(entity =>
|
||||
{
|
||||
entity.HasIndex(e => new { e.TenantId, e.EntityType })
|
||||
.HasName("entity_type");
|
||||
@ -617,13 +608,13 @@ namespace ASC.CRM.Core.EF
|
||||
.HasCollation("utf8_general_ci");
|
||||
});
|
||||
|
||||
modelBuilder.Entity<CrmTaskTemplateTask>(entity =>
|
||||
modelBuilder.Entity<DbTaskTemplateTask>(entity =>
|
||||
{
|
||||
entity.HasKey(e => new { e.TenantId, e.TaskId, e.TaskTemplateId })
|
||||
.HasName("PRIMARY");
|
||||
});
|
||||
|
||||
modelBuilder.Entity<CrmVoipCalls>(entity =>
|
||||
modelBuilder.Entity<DbVoipCalls>(entity =>
|
||||
{
|
||||
entity.HasIndex(e => e.TenantId)
|
||||
.HasName("tenant_id");
|
||||
@ -661,7 +652,7 @@ namespace ASC.CRM.Core.EF
|
||||
.HasCollation("utf8_general_ci");
|
||||
});
|
||||
|
||||
modelBuilder.Entity<CrmVoipNumber>(entity =>
|
||||
modelBuilder.Entity<DbVoipNumber>(entity =>
|
||||
{
|
||||
entity.HasIndex(e => e.TenantId)
|
||||
.HasName("tenant_id");
|
||||
|
@ -1,32 +1,37 @@
|
||||
// <auto-generated> This file has been auto generated by EF Core Power Tools. </auto-generated>
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System;
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using System.ComponentModel.DataAnnotations.Schema;
|
||||
|
||||
namespace ASC.CRM.Core.EF
|
||||
{
|
||||
[Table("crm_case")]
|
||||
public partial class CrmCase
|
||||
public partial class DbCase
|
||||
{
|
||||
[Key]
|
||||
[Column("id", TypeName = "int(11)")]
|
||||
public int Id { get; set; }
|
||||
|
||||
[Required]
|
||||
[Column("title", TypeName = "varchar(255)")]
|
||||
public string Title { get; set; }
|
||||
|
||||
[Column("is_closed")]
|
||||
public bool IsClosed { get; set; }
|
||||
|
||||
[Required]
|
||||
[Column("create_by", TypeName = "char(38)")]
|
||||
public string CreateBy { get; set; }
|
||||
public Guid CreateBy { get; set; }
|
||||
|
||||
[Column("create_on", TypeName = "datetime")]
|
||||
public DateTime CreateOn { get; set; }
|
||||
|
||||
[Column("tenant_id", TypeName = "int(11)")]
|
||||
public int TenantId { get; set; }
|
||||
|
||||
[Column("last_modifed_on", TypeName = "datetime")]
|
||||
public DateTime? LastModifedOn { get; set; }
|
||||
|
||||
[Column("last_modifed_by", TypeName = "char(38)")]
|
||||
public string LastModifedBy { get; set; }
|
||||
public Guid? LastModifedBy { get; set; }
|
||||
}
|
||||
}
|
@ -1,13 +1,11 @@
|
||||
// <auto-generated> This file has been auto generated by EF Core Power Tools. </auto-generated>
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System;
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using System.ComponentModel.DataAnnotations.Schema;
|
||||
|
||||
namespace ASC.CRM.Core.EF
|
||||
{
|
||||
[Table("crm_contact")]
|
||||
public partial class CrmContact
|
||||
public partial class DbContact
|
||||
{
|
||||
[Key]
|
||||
[Column("id", TypeName = "int(11)")]
|
@ -1,33 +1,40 @@
|
||||
// <auto-generated> This file has been auto generated by EF Core Power Tools. </auto-generated>
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System;
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using System.ComponentModel.DataAnnotations.Schema;
|
||||
|
||||
namespace ASC.CRM.Core.EF
|
||||
{
|
||||
[Table("crm_contact_info")]
|
||||
public partial class CrmContactInfo
|
||||
public partial class DbContactInfo
|
||||
{
|
||||
[Key]
|
||||
[Column("id", TypeName = "int(10)")]
|
||||
public int Id { get; set; }
|
||||
|
||||
[Required]
|
||||
[Column("data", TypeName = "text")]
|
||||
public string Data { get; set; }
|
||||
|
||||
[Column("category", TypeName = "int(255)")]
|
||||
public int Category { get; set; }
|
||||
|
||||
[Column("tenant_id", TypeName = "int(255)")]
|
||||
public int TenantId { get; set; }
|
||||
|
||||
[Column("is_primary", TypeName = "tinyint(4)")]
|
||||
public sbyte IsPrimary { get; set; }
|
||||
|
||||
[Column("contact_id", TypeName = "int(11)")]
|
||||
public int ContactId { get; set; }
|
||||
|
||||
[Column("type", TypeName = "int(255)")]
|
||||
public int Type { get; set; }
|
||||
|
||||
[Column("last_modifed_on", TypeName = "datetime")]
|
||||
public DateTime? LastModifedOn { get; set; }
|
||||
|
||||
[Column("last_modifed_by", TypeName = "char(38)")]
|
||||
public string LastModifedBy { get; set; }
|
||||
|
||||
}
|
||||
}
|
@ -7,7 +7,7 @@ using System.ComponentModel.DataAnnotations.Schema;
|
||||
namespace ASC.CRM.Core.EF
|
||||
{
|
||||
[Table("crm_currency_info")]
|
||||
public partial class CrmCurrencyInfo
|
||||
public partial class DbCurrencyInfo
|
||||
{
|
||||
[Required]
|
||||
[Column("resource_key", TypeName = "varchar(255)")]
|
@ -1,13 +1,11 @@
|
||||
// <auto-generated> This file has been auto generated by EF Core Power Tools. </auto-generated>
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System;
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using System.ComponentModel.DataAnnotations.Schema;
|
||||
|
||||
namespace ASC.CRM.Core.EF
|
||||
{
|
||||
[Table("crm_currency_rate")]
|
||||
public partial class CrmCurrencyRate
|
||||
public partial class DbCurrencyRate
|
||||
{
|
||||
[Key]
|
||||
[Column("id", TypeName = "int(11)")]
|
||||
@ -22,13 +20,14 @@ namespace ASC.CRM.Core.EF
|
||||
public decimal Rate { get; set; }
|
||||
[Required]
|
||||
[Column("create_by", TypeName = "char(38)")]
|
||||
public string CreateBy { get; set; }
|
||||
public Guid CreateBy { get; set; }
|
||||
[Column("create_on", TypeName = "datetime")]
|
||||
public DateTime CreateOn { get; set; }
|
||||
[Column("tenant_id", TypeName = "int(11)")]
|
||||
public int TenantId { get; set; }
|
||||
[Column("last_modifed_by", TypeName = "char(38)")]
|
||||
public string LastModifedBy { get; set; }
|
||||
public Guid? LastModifedBy { get; set; }
|
||||
|
||||
[Column("last_modifed_on", TypeName = "datetime")]
|
||||
public DateTime? LastModifedOn { get; set; }
|
||||
}
|
@ -1,52 +1,92 @@
|
||||
// <auto-generated> This file has been auto generated by EF Core Power Tools. </auto-generated>
|
||||
/*
|
||||
*
|
||||
* (c) Copyright Ascensio System Limited 2010-2018
|
||||
*
|
||||
* This program is freeware. You can redistribute it and/or modify it under the terms of the GNU
|
||||
* General Public License (GPL) version 3 as published by the Free Software Foundation (https://www.gnu.org/copyleft/gpl.html).
|
||||
* In accordance with Section 7(a) of the GNU GPL its Section 15 shall be amended to the effect that
|
||||
* Ascensio System SIA expressly excludes the warranty of non-infringement of any third-party rights.
|
||||
*
|
||||
* THIS PROGRAM IS DISTRIBUTED WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF MERCHANTABILITY OR
|
||||
* FITNESS FOR A PARTICULAR PURPOSE. For more details, see GNU GPL at https://www.gnu.org/copyleft/gpl.html
|
||||
*
|
||||
* You can contact Ascensio System SIA by email at sales@onlyoffice.com
|
||||
*
|
||||
* The interactive user interfaces in modified source and object code versions of ONLYOFFICE must display
|
||||
* Appropriate Legal Notices, as required under Section 5 of the GNU GPL version 3.
|
||||
*
|
||||
* Pursuant to Section 7 § 3(b) of the GNU GPL you must retain the original ONLYOFFICE logo which contains
|
||||
* relevant author attributions when distributing the software. If the display of the logo in its graphic
|
||||
* form is not reasonably feasible for technical reasons, you must include the words "Powered by ONLYOFFICE"
|
||||
* in every copy of the program you distribute.
|
||||
* Pursuant to Section 7 § 3(e) we decline to grant you any rights under trademark law for use of our trademarks.
|
||||
*
|
||||
*/
|
||||
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using System.ComponentModel.DataAnnotations.Schema;
|
||||
|
||||
namespace ASC.CRM.Core.EF
|
||||
{
|
||||
[Table("crm_deal")]
|
||||
public partial class CrmDeal
|
||||
public partial class DbDeal : IDbCrm
|
||||
{
|
||||
[Key]
|
||||
[Column("id", TypeName = "int(11)")]
|
||||
public int Id { get; set; }
|
||||
|
||||
[Required]
|
||||
[Column("title", TypeName = "varchar(255)")]
|
||||
public string Title { get; set; }
|
||||
|
||||
[Column("description", TypeName = "text")]
|
||||
public string Description { get; set; }
|
||||
|
||||
[Required]
|
||||
[Column("responsible_id", TypeName = "char(38)")]
|
||||
public string ResponsibleId { get; set; }
|
||||
public Guid ResponsibleId { get; set; }
|
||||
|
||||
[Column("contact_id", TypeName = "int(11)")]
|
||||
public int ContactId { get; set; }
|
||||
|
||||
[Column("create_on", TypeName = "datetime")]
|
||||
public DateTime CreateOn { get; set; }
|
||||
|
||||
[Required]
|
||||
[Column("create_by", TypeName = "char(38)")]
|
||||
public string CreateBy { get; set; }
|
||||
public Guid CreateBy { get; set; }
|
||||
|
||||
[Column("bid_currency", TypeName = "varchar(255)")]
|
||||
public string BidCurrency { get; set; }
|
||||
|
||||
[Column("bid_value", TypeName = "decimal(50,9)")]
|
||||
public decimal BidValue { get; set; }
|
||||
|
||||
[Column("bid_type", TypeName = "int(11)")]
|
||||
public int BidType { get; set; }
|
||||
|
||||
[Column("deal_milestone_id", TypeName = "int(11)")]
|
||||
public int DealMilestoneId { get; set; }
|
||||
|
||||
[Column("tenant_id", TypeName = "int(11)")]
|
||||
public int TenantId { get; set; }
|
||||
|
||||
[Column("expected_close_date", TypeName = "datetime")]
|
||||
public DateTime ExpectedCloseDate { get; set; }
|
||||
|
||||
[Column("per_period_value", TypeName = "int(11)")]
|
||||
public int PerPeriodValue { get; set; }
|
||||
|
||||
[Column("deal_milestone_probability", TypeName = "int(11)")]
|
||||
public int? DealMilestoneProbability { get; set; }
|
||||
|
||||
[Column("last_modifed_on", TypeName = "datetime")]
|
||||
public DateTime? LastModifedOn { get; set; }
|
||||
|
||||
[Column("last_modifed_by", TypeName = "char(38)")]
|
||||
public string LastModifedBy { get; set; }
|
||||
public Guid LastModifedBy { get; set; }
|
||||
|
||||
[Column("actual_close_date", TypeName = "datetime")]
|
||||
public DateTime? ActualCloseDate { get; set; }
|
||||
}
|
@ -7,7 +7,7 @@ using System.ComponentModel.DataAnnotations.Schema;
|
||||
namespace ASC.CRM.Core.EF
|
||||
{
|
||||
[Table("crm_deal_milestone")]
|
||||
public partial class CrmDealMilestone
|
||||
public partial class DbDealMilestone : IDbCrm
|
||||
{
|
||||
[Key]
|
||||
[Column("id", TypeName = "int(10)")]
|
@ -1,4 +1,5 @@
|
||||
// <auto-generated> This file has been auto generated by EF Core Power Tools. </auto-generated>
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
@ -7,16 +8,19 @@ using System.ComponentModel.DataAnnotations.Schema;
|
||||
namespace ASC.CRM.Core.EF
|
||||
{
|
||||
[Table("crm_entity_contact")]
|
||||
public partial class CrmEntityContact
|
||||
public partial class DbEntityContact
|
||||
{
|
||||
[Key]
|
||||
[Column("entity_id", TypeName = "int(11)")]
|
||||
public int EntityId { get; set; }
|
||||
|
||||
[Key]
|
||||
[Column("entity_type", TypeName = "int(11)")]
|
||||
public int EntityType { get; set; }
|
||||
|
||||
[Key]
|
||||
[Column("contact_id", TypeName = "int(11)")]
|
||||
public int ContactId { get; set; }
|
||||
}
|
||||
|
||||
}
|
@ -1,4 +1,6 @@
|
||||
// <auto-generated> This file has been auto generated by EF Core Power Tools. </auto-generated>
|
||||
using ASC.CRM.Core.Enums;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
@ -7,16 +9,19 @@ using System.ComponentModel.DataAnnotations.Schema;
|
||||
namespace ASC.CRM.Core.EF
|
||||
{
|
||||
[Table("crm_entity_tag")]
|
||||
public partial class CrmEntityTag
|
||||
public partial class DbEntityTag
|
||||
{
|
||||
[Key]
|
||||
[Column("tag_id", TypeName = "int(11)")]
|
||||
public int TagId { get; set; }
|
||||
|
||||
[Key]
|
||||
[Column("entity_id", TypeName = "int(11)")]
|
||||
public int EntityId { get; set; }
|
||||
|
||||
[Key]
|
||||
[Column("entity_type", TypeName = "int(10)")]
|
||||
public int EntityType { get; set; }
|
||||
public EntityType EntityType { get; set; }
|
||||
}
|
||||
|
||||
}
|
@ -7,7 +7,7 @@ using System.ComponentModel.DataAnnotations.Schema;
|
||||
namespace ASC.CRM.Core.EF
|
||||
{
|
||||
[Table("crm_field_description")]
|
||||
public partial class CrmFieldDescription
|
||||
public partial class DbFieldDescription
|
||||
{
|
||||
[Key]
|
||||
[Column("id", TypeName = "int(11)")]
|
@ -1,13 +1,11 @@
|
||||
// <auto-generated> This file has been auto generated by EF Core Power Tools. </auto-generated>
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System;
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using System.ComponentModel.DataAnnotations.Schema;
|
||||
|
||||
namespace ASC.CRM.Core.EF
|
||||
{
|
||||
[Table("crm_field_value")]
|
||||
public partial class CrmFieldValue
|
||||
public partial class DbFieldValue
|
||||
{
|
||||
[Key]
|
||||
[Column("id", TypeName = "int(11)")]
|
@ -7,7 +7,7 @@ using System.ComponentModel.DataAnnotations.Schema;
|
||||
namespace ASC.CRM.Core.EF
|
||||
{
|
||||
[Table("crm_invoice")]
|
||||
public partial class CrmInvoice
|
||||
public partial class DbInvoice
|
||||
{
|
||||
[Key]
|
||||
[Column("id", TypeName = "int(11)")]
|
@ -7,7 +7,7 @@ using System.ComponentModel.DataAnnotations.Schema;
|
||||
namespace ASC.CRM.Core.EF
|
||||
{
|
||||
[Table("crm_invoice_item")]
|
||||
public partial class CrmInvoiceItem
|
||||
public partial class DbInvoiceItem : IDbCrm
|
||||
{
|
||||
[Key]
|
||||
[Column("id", TypeName = "int(11)")]
|
||||
@ -26,7 +26,7 @@ namespace ASC.CRM.Core.EF
|
||||
[Column("stock_quantity", TypeName = "decimal(10,2)")]
|
||||
public decimal StockQuantity { get; set; }
|
||||
[Column("track_inventory", TypeName = "tinyint(4)")]
|
||||
public sbyte TrackInventory { get; set; }
|
||||
public bool TrackInventory { get; set; }
|
||||
[Column("invoice_tax1_id", TypeName = "int(11)")]
|
||||
public int InvoiceTax1Id { get; set; }
|
||||
[Column("invoice_tax2_id", TypeName = "int(11)")]
|
||||
@ -34,15 +34,19 @@ namespace ASC.CRM.Core.EF
|
||||
[Required]
|
||||
[Column("currency", TypeName = "varchar(255)")]
|
||||
public string Currency { get; set; }
|
||||
|
||||
[Column("create_on", TypeName = "datetime")]
|
||||
public DateTime CreateOn { get; set; }
|
||||
|
||||
[Required]
|
||||
[Column("create_by", TypeName = "char(38)")]
|
||||
public string CreateBy { get; set; }
|
||||
public Guid CreateBy { get; set; }
|
||||
|
||||
[Column("last_modifed_on", TypeName = "datetime")]
|
||||
public DateTime? LastModifedOn { get; set; }
|
||||
|
||||
[Column("last_modifed_by", TypeName = "char(38)")]
|
||||
public string LastModifedBy { get; set; }
|
||||
public Guid LastModifedBy { get; set; }
|
||||
[Column("tenant_id", TypeName = "int(11)")]
|
||||
public int TenantId { get; set; }
|
||||
}
|
@ -7,7 +7,7 @@ using System.ComponentModel.DataAnnotations.Schema;
|
||||
namespace ASC.CRM.Core.EF
|
||||
{
|
||||
[Table("crm_invoice_line")]
|
||||
public partial class CrmInvoiceLine
|
||||
public partial class DbInvoiceLine : IDbCrm
|
||||
{
|
||||
[Key]
|
||||
[Column("id", TypeName = "int(11)")]
|
@ -7,28 +7,36 @@ using System.ComponentModel.DataAnnotations.Schema;
|
||||
namespace ASC.CRM.Core.EF
|
||||
{
|
||||
[Table("crm_invoice_tax")]
|
||||
public partial class CrmInvoiceTax
|
||||
public partial class DbInvoiceTax : IDbCrm
|
||||
{
|
||||
[Key]
|
||||
[Column("id", TypeName = "int(11)")]
|
||||
public int Id { get; set; }
|
||||
|
||||
[Required]
|
||||
[Column("name", TypeName = "varchar(255)")]
|
||||
public string Name { get; set; }
|
||||
|
||||
[Required]
|
||||
[Column("description", TypeName = "text")]
|
||||
public string Description { get; set; }
|
||||
|
||||
[Column("rate", TypeName = "decimal(10,2)")]
|
||||
public decimal Rate { get; set; }
|
||||
|
||||
[Column("create_on", TypeName = "datetime")]
|
||||
public DateTime CreateOn { get; set; }
|
||||
|
||||
[Required]
|
||||
[Column("create_by", TypeName = "char(38)")]
|
||||
public string CreateBy { get; set; }
|
||||
public Guid CreateBy { get; set; }
|
||||
|
||||
[Column("last_modifed_on", TypeName = "datetime")]
|
||||
public DateTime? LastModifedOn { get; set; }
|
||||
|
||||
[Column("last_modifed_by", TypeName = "char(38)")]
|
||||
public string LastModifedBy { get; set; }
|
||||
public Guid LastModifedBy { get; set; }
|
||||
|
||||
[Column("tenant_id", TypeName = "int(11)")]
|
||||
public int TenantId { get; set; }
|
||||
}
|
@ -1,30 +1,35 @@
|
||||
// <auto-generated> This file has been auto generated by EF Core Power Tools. </auto-generated>
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using ASC.CRM.Core.Enums;
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using System.ComponentModel.DataAnnotations.Schema;
|
||||
|
||||
namespace ASC.CRM.Core.EF
|
||||
{
|
||||
[Table("crm_list_item")]
|
||||
public partial class CrmListItem
|
||||
public partial class DbListItem : IDbCrm
|
||||
{
|
||||
[Key]
|
||||
[Column("id", TypeName = "int(11)")]
|
||||
public int Id { get; set; }
|
||||
|
||||
[Required]
|
||||
[Column("title", TypeName = "varchar(255)")]
|
||||
public string Title { get; set; }
|
||||
|
||||
[Column("sort_order", TypeName = "int(11)")]
|
||||
public int SortOrder { get; set; }
|
||||
|
||||
[Column("color", TypeName = "varchar(255)")]
|
||||
public string Color { get; set; }
|
||||
|
||||
[Column("additional_params", TypeName = "varchar(255)")]
|
||||
public string AdditionalParams { get; set; }
|
||||
|
||||
[Column("tenant_id", TypeName = "int(11)")]
|
||||
public int TenantId { get; set; }
|
||||
|
||||
[Column("list_type", TypeName = "int(255)")]
|
||||
public int? ListType { get; set; }
|
||||
public ListType ListType { get; set; }
|
||||
|
||||
[Column("description", TypeName = "varchar(255)")]
|
||||
public string Description { get; set; }
|
||||
}
|
@ -7,7 +7,7 @@ using System.ComponentModel.DataAnnotations.Schema;
|
||||
namespace ASC.CRM.Core.EF
|
||||
{
|
||||
[Table("crm_organisation_logo")]
|
||||
public partial class CrmOrganisationLogo
|
||||
public partial class DbOrganisationLogo
|
||||
{
|
||||
[Key]
|
||||
[Column("id", TypeName = "int(11)")]
|
@ -1,20 +1,20 @@
|
||||
// <auto-generated> This file has been auto generated by EF Core Power Tools. </auto-generated>
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using System.ComponentModel.DataAnnotations.Schema;
|
||||
|
||||
namespace ASC.CRM.Core.EF
|
||||
{
|
||||
[Table("crm_projects")]
|
||||
public partial class CrmProjects
|
||||
public partial class DbProjects
|
||||
{
|
||||
[Key]
|
||||
[Column("project_id", TypeName = "int(10)")]
|
||||
public int ProjectId { get; set; }
|
||||
|
||||
[Key]
|
||||
[Column("contact_id", TypeName = "int(10)")]
|
||||
public int ContactId { get; set; }
|
||||
|
||||
[Key]
|
||||
[Column("tenant_id", TypeName = "int(10)")]
|
||||
public int TenantId { get; set; }
|
@ -7,7 +7,7 @@ using System.ComponentModel.DataAnnotations.Schema;
|
||||
namespace ASC.CRM.Core.EF
|
||||
{
|
||||
[Table("crm_relationship_event")]
|
||||
public partial class CrmRelationshipEvent
|
||||
public partial class DbRelationshipEvent
|
||||
{
|
||||
[Key]
|
||||
[Column("id", TypeName = "int(11)")]
|
@ -7,7 +7,7 @@ using System.ComponentModel.DataAnnotations.Schema;
|
||||
namespace ASC.CRM.Core.EF
|
||||
{
|
||||
[Table("crm_report_file")]
|
||||
public partial class CrmReportFile
|
||||
public partial class DbReportFile
|
||||
{
|
||||
[Key]
|
||||
[Column("file_id", TypeName = "int(11)")]
|
@ -1,23 +1,24 @@
|
||||
// <auto-generated> This file has been auto generated by EF Core Power Tools. </auto-generated>
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using ASC.CRM.Core.Enums;
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using System.ComponentModel.DataAnnotations.Schema;
|
||||
|
||||
namespace ASC.CRM.Core.EF
|
||||
{
|
||||
[Table("crm_tag")]
|
||||
public partial class CrmTag
|
||||
public partial class DbTag : IDbCrm
|
||||
{
|
||||
[Key]
|
||||
[Column("id", TypeName = "int(11)")]
|
||||
public int Id { get; set; }
|
||||
|
||||
[Required]
|
||||
[Column("title", TypeName = "varchar(255)")]
|
||||
public string Title { get; set; }
|
||||
|
||||
[Column("tenant_id", TypeName = "int(11)")]
|
||||
public int TenantId { get; set; }
|
||||
|
||||
[Column("entity_type", TypeName = "int(11)")]
|
||||
public int EntityType { get; set; }
|
||||
public EntityType EntityType { get; set; }
|
||||
}
|
||||
}
|
@ -1,51 +1,66 @@
|
||||
// <auto-generated> This file has been auto generated by EF Core Power Tools. </auto-generated>
|
||||
using ASC.CRM.Core.Enums;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using System.ComponentModel.DataAnnotations.Schema;
|
||||
|
||||
namespace ASC.CRM.Core.EF
|
||||
{
|
||||
[Table("crm_task")]
|
||||
public partial class CrmTask
|
||||
public partial class DbTask
|
||||
{
|
||||
[Key]
|
||||
[Column("id", TypeName = "int(11)")]
|
||||
public int Id { get; set; }
|
||||
|
||||
[Required]
|
||||
[Column("title", TypeName = "varchar(255)")]
|
||||
public string Title { get; set; }
|
||||
|
||||
[Column("description", TypeName = "text")]
|
||||
public string Description { get; set; }
|
||||
|
||||
[Column("deadline", TypeName = "datetime")]
|
||||
public DateTime Deadline { get; set; }
|
||||
|
||||
[Required]
|
||||
[Column("responsible_id", TypeName = "char(38)")]
|
||||
public string ResponsibleId { get; set; }
|
||||
public Guid ResponsibleId { get; set; }
|
||||
|
||||
[Column("contact_id", TypeName = "int(11)")]
|
||||
public int ContactId { get; set; }
|
||||
|
||||
[Column("is_closed", TypeName = "int(1)")]
|
||||
public int IsClosed { get; set; }
|
||||
public bool IsClosed { get; set; }
|
||||
|
||||
[Column("tenant_id", TypeName = "int(11)")]
|
||||
public int TenantId { get; set; }
|
||||
|
||||
[Column("entity_type", TypeName = "int(11)")]
|
||||
public int EntityType { get; set; }
|
||||
public EntityType EntityType { get; set; }
|
||||
|
||||
[Column("entity_id", TypeName = "int(11)")]
|
||||
public int EntityId { get; set; }
|
||||
|
||||
[Column("category_id", TypeName = "int(11)")]
|
||||
public int CategoryId { get; set; }
|
||||
|
||||
[Column("create_on", TypeName = "datetime")]
|
||||
public DateTime CreateOn { get; set; }
|
||||
|
||||
[Required]
|
||||
[Column("create_by", TypeName = "char(38)")]
|
||||
public string CreateBy { get; set; }
|
||||
public Guid CreateBy { get; set; }
|
||||
|
||||
[Column("last_modifed_on", TypeName = "datetime")]
|
||||
public DateTime? LastModifedOn { get; set; }
|
||||
|
||||
[Column("last_modifed_by", TypeName = "char(38)")]
|
||||
public string LastModifedBy { get; set; }
|
||||
public Guid? LastModifedBy { get; set; }
|
||||
|
||||
[Column("alert_value", TypeName = "int(10)")]
|
||||
public int AlertValue { get; set; }
|
||||
|
||||
[Column("exec_alert", TypeName = "int(10)")]
|
||||
public int ExecAlert { get; set; }
|
||||
public bool ExecAlert { get; set; }
|
||||
}
|
||||
}
|
@ -7,41 +7,55 @@ using System.ComponentModel.DataAnnotations.Schema;
|
||||
namespace ASC.CRM.Core.EF
|
||||
{
|
||||
[Table("crm_task_template")]
|
||||
public partial class CrmTaskTemplate
|
||||
public partial class DbTaskTemplate : IDbCrm
|
||||
{
|
||||
[Key]
|
||||
[Column("id", TypeName = "int(10)")]
|
||||
public int Id { get; set; }
|
||||
|
||||
[Column("create_on", TypeName = "datetime")]
|
||||
public DateTime CreateOn { get; set; }
|
||||
|
||||
[Required]
|
||||
[Column("create_by", TypeName = "char(38)")]
|
||||
public string CreateBy { get; set; }
|
||||
public Guid CreateBy { get; set; }
|
||||
|
||||
[Column("last_modifed_on", TypeName = "datetime")]
|
||||
public DateTime LastModifedOn { get; set; }
|
||||
|
||||
[Required]
|
||||
[Column("last_modifed_by", TypeName = "char(38)")]
|
||||
public string LastModifedBy { get; set; }
|
||||
public Guid LastModifedBy { get; set; }
|
||||
|
||||
[Required]
|
||||
[Column("title", TypeName = "varchar(255)")]
|
||||
public string Title { get; set; }
|
||||
|
||||
[Column("category_id", TypeName = "int(10)")]
|
||||
public int CategoryId { get; set; }
|
||||
|
||||
[Column("description", TypeName = "tinytext")]
|
||||
public string Description { get; set; }
|
||||
|
||||
[Required]
|
||||
[Column("responsible_id", TypeName = "char(38)")]
|
||||
public string ResponsibleId { get; set; }
|
||||
public Guid ResponsibleId { get; set; }
|
||||
|
||||
[Column("is_notify", TypeName = "tinyint(4)")]
|
||||
public sbyte IsNotify { get; set; }
|
||||
public bool IsNotify { get; set; }
|
||||
|
||||
[Column("offset", TypeName = "bigint(20)")]
|
||||
public long Offset { get; set; }
|
||||
|
||||
[Column("sort_order", TypeName = "int(11)")]
|
||||
public int SortOrder { get; set; }
|
||||
|
||||
[Column("deadLine_is_fixed", TypeName = "tinyint(4)")]
|
||||
public sbyte DeadLineIsFixed { get; set; }
|
||||
public bool DeadLineIsFixed { get; set; }
|
||||
|
||||
[Column("tenant_id", TypeName = "int(10)")]
|
||||
public int TenantId { get; set; }
|
||||
|
||||
[Column("container_id", TypeName = "int(10)")]
|
||||
public int ContainerId { get; set; }
|
||||
}
|
@ -1,4 +1,5 @@
|
||||
// <auto-generated> This file has been auto generated by EF Core Power Tools. </auto-generated>
|
||||
using ASC.CRM.Core.Enums;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
@ -7,27 +8,34 @@ using System.ComponentModel.DataAnnotations.Schema;
|
||||
namespace ASC.CRM.Core.EF
|
||||
{
|
||||
[Table("crm_task_template_container")]
|
||||
public partial class CrmTaskTemplateContainer
|
||||
public partial class DbTaskTemplateContainer : IDbCrm
|
||||
{
|
||||
[Key]
|
||||
[Column("id", TypeName = "int(10)")]
|
||||
public int Id { get; set; }
|
||||
|
||||
[Required]
|
||||
[Column("title", TypeName = "varchar(256)")]
|
||||
public string Title { get; set; }
|
||||
|
||||
[Column("entity_type", TypeName = "int(10)")]
|
||||
public int EntityType { get; set; }
|
||||
public EntityType EntityType { get; set; }
|
||||
|
||||
[Column("tenant_id", TypeName = "int(10)")]
|
||||
public int TenantId { get; set; }
|
||||
|
||||
[Column("create_on", TypeName = "datetime")]
|
||||
public DateTime CreateOn { get; set; }
|
||||
|
||||
[Required]
|
||||
[Column("create_by", TypeName = "char(38)")]
|
||||
public string CreateBy { get; set; }
|
||||
public Guid CreateBy { get; set; }
|
||||
|
||||
[Column("last_modifed_on", TypeName = "datetime")]
|
||||
public DateTime LastModifedOn { get; set; }
|
||||
|
||||
[Required]
|
||||
[Column("last_modifed_by", TypeName = "char(38)")]
|
||||
public string LastModifedBy { get; set; }
|
||||
public Guid LastModifedBy { get; set; }
|
||||
}
|
||||
}
|
@ -1,20 +1,19 @@
|
||||
// <auto-generated> This file has been auto generated by EF Core Power Tools. </auto-generated>
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using System.ComponentModel.DataAnnotations.Schema;
|
||||
|
||||
namespace ASC.CRM.Core.EF
|
||||
{
|
||||
[Table("crm_task_template_task")]
|
||||
public partial class CrmTaskTemplateTask
|
||||
public partial class DbTaskTemplateTask : IDbCrm
|
||||
{
|
||||
[Key]
|
||||
[Column("task_id", TypeName = "int(10)")]
|
||||
public int TaskId { get; set; }
|
||||
|
||||
[Key]
|
||||
[Column("task_template_id", TypeName = "int(10)")]
|
||||
public int TaskTemplateId { get; set; }
|
||||
|
||||
[Key]
|
||||
[Column("tenant_id", TypeName = "int(10)")]
|
||||
public int TenantId { get; set; }
|
@ -7,7 +7,7 @@ using System.ComponentModel.DataAnnotations.Schema;
|
||||
namespace ASC.CRM.Core.EF
|
||||
{
|
||||
[Table("crm_voip_calls")]
|
||||
public partial class CrmVoipCalls
|
||||
public partial class DbVoipCalls
|
||||
{
|
||||
[Key]
|
||||
[Column("id", TypeName = "varchar(50)")]
|
@ -7,7 +7,7 @@ using System.ComponentModel.DataAnnotations.Schema;
|
||||
namespace ASC.CRM.Core.EF
|
||||
{
|
||||
[Table("crm_voip_number")]
|
||||
public partial class CrmVoipNumber
|
||||
public partial class DbVoipNumber
|
||||
{
|
||||
[Key]
|
||||
[Column("id", TypeName = "varchar(50)")]
|
@ -72,8 +72,7 @@ namespace ASC.CRM.Services.NotifyService {
|
||||
/// ----------------------------------------
|
||||
///
|
||||
/// #each
|
||||
///
|
||||
/// " [rest of string was truncated]";.
|
||||
///
/// [rest of string was truncated]";.
|
||||
/// </summary>
|
||||
public static string pattern_AddRelationshipEvent {
|
||||
get {
|
||||
@ -194,7 +193,7 @@ namespace ASC.CRM.Services.NotifyService {
|
||||
///#end
|
||||
///#if($AdditionalData.get_item("CaseRelativeUrl"))
|
||||
///
|
||||
///Link with case: "$Addit [rest of string was truncated]";.
|
||||
///Link with [rest of string was truncated]";.
|
||||
/// </summary>
|
||||
public static string pattern_ResponsibleForTask {
|
||||
get {
|
||||
@ -225,7 +224,7 @@ namespace ASC.CRM.Services.NotifyService {
|
||||
///#end
|
||||
///#if($AdditionalData.get_item("CaseRelativeUrl"))
|
||||
///
|
||||
///Link with case: "$AdditionalData.get_item("CaseTitle")":"${__VirtualRootPath}/$AdditionalData.get_item("CaseRelativeUrl") [rest of string was truncated]";.
|
||||
///Link with case: "$AdditionalData.get_item("CaseTitle")":"${__VirtualRootPath}/$AdditionalData.get_item("CaseRe [rest of string was truncated]";.
|
||||
/// </summary>
|
||||
public static string pattern_TaskReminder {
|
||||
get {
|
||||
|
Loading…
Reference in New Issue
Block a user