crm: code refactoring
This commit is contained in:
parent
f1ca0971fd
commit
bbe1f1f205
@ -268,11 +268,11 @@ namespace ASC.CRM.Api
|
||||
var customField = new CustomField
|
||||
{
|
||||
EntityType = entityTypeObj,
|
||||
FieldType = (CustomFieldType)fieldType,
|
||||
Type = (CustomFieldType)fieldType,
|
||||
ID = id,
|
||||
Mask = mask,
|
||||
Label = label,
|
||||
Position = position
|
||||
SortOrder = position
|
||||
};
|
||||
|
||||
_daoFactory.GetCustomFieldDao().EditItem(customField);
|
||||
|
@ -36,6 +36,7 @@ using ASC.CRM.Core.EF;
|
||||
|
||||
using AutoMapper;
|
||||
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
using Microsoft.Extensions.Options;
|
||||
|
||||
namespace ASC.CRM.Core.Dao
|
||||
@ -62,7 +63,7 @@ namespace ASC.CRM.Core.Dao
|
||||
|
||||
public List<CurrencyRate> GetAll()
|
||||
{
|
||||
var rates = CrmDbContext.CurrencyRate.Where(x => x.TenantId == TenantID).ToList();
|
||||
var rates = Query(CrmDbContext.CurrencyRate).ToList();
|
||||
|
||||
return _mapper.Map<List<DbCurrencyRate>, List<CurrencyRate>>(rates);
|
||||
}
|
||||
@ -71,68 +72,54 @@ namespace ASC.CRM.Core.Dao
|
||||
{
|
||||
var entity = CrmDbContext.CurrencyRate.Find(id);
|
||||
|
||||
if (entity.TenantId != TenantID) return null;
|
||||
|
||||
return _mapper.Map<CurrencyRate>(entity);
|
||||
}
|
||||
|
||||
public CurrencyRate GetByCurrencies(string fromCurrency, string toCurrency)
|
||||
{
|
||||
return _mapper.Map<CurrencyRate>(CrmDbContext.CurrencyRate.FirstOrDefault(x => x.TenantId == TenantID && String.Compare(x.FromCurrency, fromCurrency, true) == 0 &&
|
||||
String.Compare(x.ToCurrency, toCurrency, true) == 0));
|
||||
var dbEntity = Query(CrmDbContext.CurrencyRate).FirstOrDefault(x =>
|
||||
string.Compare(x.FromCurrency, fromCurrency, true) == 0 &&
|
||||
string.Compare(x.ToCurrency, toCurrency, true) == 0);
|
||||
|
||||
return _mapper.Map<CurrencyRate>(dbEntity);
|
||||
|
||||
}
|
||||
|
||||
public int SaveOrUpdate(CurrencyRate currencyRate)
|
||||
public int SaveOrUpdate(CurrencyRate entity)
|
||||
{
|
||||
if (String.IsNullOrEmpty(currencyRate.FromCurrency) || String.IsNullOrEmpty(currencyRate.ToCurrency) || currencyRate.Rate < 0)
|
||||
if (String.IsNullOrEmpty(entity.FromCurrency) || String.IsNullOrEmpty(entity.ToCurrency) || entity.Rate < 0)
|
||||
throw new ArgumentException();
|
||||
|
||||
if (currencyRate.ID > 0 && currencyRate.Rate == 0)
|
||||
return Delete(currencyRate.ID);
|
||||
if (entity.ID > 0 && entity.Rate == 0)
|
||||
return Delete(entity.ID);
|
||||
|
||||
if (CrmDbContext.CurrencyRate.Where(x => x.Id == currencyRate.ID).Any())
|
||||
{
|
||||
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
|
||||
};
|
||||
var dbEntity = new DbCurrencyRate
|
||||
{
|
||||
Id = entity.ID,
|
||||
FromCurrency = entity.FromCurrency.ToUpper(),
|
||||
ToCurrency = entity.ToCurrency.ToUpper(),
|
||||
Rate = entity.Rate,
|
||||
CreateOn = entity.CreateOn == DateTime.MinValue ? DateTime.UtcNow : entity.CreateOn,
|
||||
CreateBy = entity.CreateBy == Guid.Empty ? _securityContext.CurrentAccount.ID : entity.CreateBy,
|
||||
LastModifedOn = DateTime.UtcNow,
|
||||
LastModifedBy = _securityContext.CurrentAccount.ID,
|
||||
TenantId = TenantID
|
||||
};
|
||||
|
||||
CrmDbContext.CurrencyRate.Add(itemToInsert);
|
||||
CrmDbContext.SaveChanges();
|
||||
CrmDbContext.Update(dbEntity);
|
||||
CrmDbContext.SaveChanges();
|
||||
|
||||
currencyRate.ID = itemToInsert.Id;
|
||||
}
|
||||
else
|
||||
{
|
||||
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;
|
||||
return dbEntity.Id;
|
||||
}
|
||||
|
||||
public int Delete(int id)
|
||||
{
|
||||
if (id <= 0) throw new ArgumentException();
|
||||
var dbEntity = CrmDbContext.CurrencyRate.Find(id);
|
||||
|
||||
var itemToDelete = new DbCurrencyRate { Id = id };
|
||||
CrmDbContext.Remove(dbEntity);
|
||||
|
||||
CrmDbContext.CurrencyRate.Attach(itemToDelete);
|
||||
CrmDbContext.CurrencyRate.Remove(itemToDelete);
|
||||
CrmDbContext.SaveChanges();
|
||||
|
||||
return id;
|
||||
@ -142,8 +129,8 @@ namespace ASC.CRM.Core.Dao
|
||||
{
|
||||
using var tx = CrmDbContext.Database.BeginTransaction();
|
||||
|
||||
var items = CrmDbContext.CurrencyRate.Where(x => x.TenantId == TenantID);
|
||||
|
||||
var items = Query(CrmDbContext.CurrencyRate).AsNoTracking();
|
||||
|
||||
CrmDbContext.RemoveRange(items);
|
||||
|
||||
foreach (var rate in rates)
|
||||
|
@ -43,6 +43,7 @@ using ASC.Web.CRM.Core.Search;
|
||||
|
||||
using AutoMapper;
|
||||
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
using Microsoft.Extensions.Options;
|
||||
|
||||
using Newtonsoft.Json;
|
||||
@ -53,14 +54,15 @@ namespace ASC.CRM.Core.Dao
|
||||
[Scope]
|
||||
public class CustomFieldDao : AbstractDao
|
||||
{
|
||||
|
||||
private TenantUtil _tenantUtil;
|
||||
private FactoryIndexerFieldValue _factoryIndexer;
|
||||
private readonly TenantUtil _tenantUtil;
|
||||
private readonly FactoryIndexerFieldValue _factoryIndexer;
|
||||
|
||||
public CustomFieldDao(
|
||||
DbContextManager<CrmDbContext> dbContextManager,
|
||||
TenantManager tenantManager,
|
||||
SecurityContext securityContext,
|
||||
TenantUtil tenantUtil,
|
||||
FactoryIndexerFieldValue factoryIndexer,
|
||||
IOptionsMonitor<ILog> logger,
|
||||
ICache ascCache,
|
||||
IMapper mapper
|
||||
@ -73,6 +75,7 @@ namespace ASC.CRM.Core.Dao
|
||||
mapper)
|
||||
{
|
||||
_tenantUtil = tenantUtil;
|
||||
_factoryIndexer = factoryIndexer;
|
||||
}
|
||||
|
||||
|
||||
@ -100,41 +103,34 @@ namespace ASC.CRM.Core.Dao
|
||||
SetFieldValueInDb(entityType, entityID, fieldID, fieldValue);
|
||||
}
|
||||
|
||||
private void SetFieldValueInDb(EntityType entityType, int entityID, int fieldID, String fieldValue)
|
||||
private void SetFieldValueInDb(EntityType entityType, int entityID, int fieldID, string fieldValue)
|
||||
{
|
||||
if (!_supportedEntityType.Contains(entityType))
|
||||
throw new ArgumentException();
|
||||
|
||||
fieldValue = fieldValue.Trim();
|
||||
|
||||
var itemToDelete = Query(CrmDbContext.FieldValue)
|
||||
.Where(x => x.EntityId == entityID && x.EntityType == entityType && x.FieldId == fieldID);
|
||||
var dbEntity = Query(CrmDbContext.FieldValue)
|
||||
.FirstOrDefault(x => x.EntityId == entityID &&
|
||||
x.EntityType == entityType &&
|
||||
x.FieldId == fieldID);
|
||||
|
||||
CrmDbContext.FieldValue.RemoveRange(itemToDelete);
|
||||
CrmDbContext.SaveChanges();
|
||||
|
||||
if (!String.IsNullOrEmpty(fieldValue))
|
||||
if (string.IsNullOrEmpty(fieldValue))
|
||||
{
|
||||
var lastModifiedOn = _tenantUtil.DateTimeToUtc(_tenantUtil.DateTimeNow());
|
||||
_factoryIndexer.Delete(dbEntity);
|
||||
|
||||
var dbFieldValue = new DbFieldValue
|
||||
{
|
||||
EntityId = entityID,
|
||||
Value = fieldValue,
|
||||
FieldId = fieldID,
|
||||
EntityType = entityType,
|
||||
LastModifedOn = lastModifiedOn,
|
||||
LastModifedBy = _securityContext.CurrentAccount.ID,
|
||||
TenantId = TenantID
|
||||
};
|
||||
|
||||
CrmDbContext.Add(dbFieldValue);
|
||||
CrmDbContext.SaveChanges();
|
||||
|
||||
var id = dbFieldValue.Id;
|
||||
|
||||
_factoryIndexer.Index(dbFieldValue);
|
||||
CrmDbContext.Remove(dbEntity);
|
||||
}
|
||||
else
|
||||
{
|
||||
dbEntity.Value = fieldValue;
|
||||
dbEntity.LastModifedOn = _tenantUtil.DateTimeToUtc(_tenantUtil.DateTimeNow());
|
||||
dbEntity.LastModifedBy = _securityContext.CurrentAccount.ID;
|
||||
|
||||
_factoryIndexer.Index(dbEntity);
|
||||
}
|
||||
|
||||
CrmDbContext.SaveChanges();
|
||||
}
|
||||
|
||||
private string GetValidMask(CustomFieldType customFieldType, String mask)
|
||||
@ -224,7 +220,7 @@ namespace ASC.CRM.Core.Dao
|
||||
{
|
||||
_logger.Error(ex);
|
||||
|
||||
throw ex;
|
||||
throw;
|
||||
}
|
||||
}
|
||||
return JsonConvert.SerializeObject(resultMask);
|
||||
@ -234,11 +230,12 @@ namespace ASC.CRM.Core.Dao
|
||||
{
|
||||
if (!_supportedEntityType.Contains(entityType) || String.IsNullOrEmpty(label))
|
||||
throw new ArgumentException();
|
||||
|
||||
var resultMask = GetValidMask(customFieldType, mask);
|
||||
|
||||
var sortOrder = Query(CrmDbContext.FieldDescription).Select(x => x.SortOrder).Max() + 1;
|
||||
|
||||
var itemToInsert = new DbFieldDescription
|
||||
var dbEntity = new DbFieldDescription
|
||||
{
|
||||
Label = label,
|
||||
Type = customFieldType,
|
||||
@ -248,11 +245,11 @@ namespace ASC.CRM.Core.Dao
|
||||
TenantId = TenantID
|
||||
};
|
||||
|
||||
CrmDbContext.FieldDescription.Add(itemToInsert);
|
||||
CrmDbContext.FieldDescription.Add(dbEntity);
|
||||
|
||||
CrmDbContext.SaveChanges();
|
||||
|
||||
return itemToInsert.Id;
|
||||
return dbEntity.Id;
|
||||
}
|
||||
|
||||
public String GetValue(EntityType entityType, int entityID, int fieldID)
|
||||
@ -317,7 +314,7 @@ namespace ASC.CRM.Core.Dao
|
||||
|
||||
public void EditItem(CustomField customField)
|
||||
{
|
||||
if (String.IsNullOrEmpty(customField.Label))
|
||||
if (string.IsNullOrEmpty(customField.Label))
|
||||
throw new ArgumentException();
|
||||
|
||||
if (HaveRelativeLink(customField.ID))
|
||||
@ -367,7 +364,7 @@ namespace ASC.CRM.Core.Dao
|
||||
{
|
||||
_logger.Error(ex);
|
||||
|
||||
throw ex;
|
||||
throw;
|
||||
}
|
||||
|
||||
var itemToUpdate = Query(CrmDbContext.FieldDescription).FirstOrDefault(x => x.Id == customField.ID);
|
||||
@ -375,37 +372,37 @@ namespace ASC.CRM.Core.Dao
|
||||
itemToUpdate.Label = customField.Label;
|
||||
itemToUpdate.Mask = customField.Mask;
|
||||
|
||||
CrmDbContext.Update(itemToUpdate);
|
||||
CrmDbContext.SaveChanges();
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
var resultMask = GetValidMask(customField.FieldType, customField.Mask);
|
||||
var resultMask = GetValidMask(customField.Type, customField.Mask);
|
||||
|
||||
var itemToUpdate = Query(CrmDbContext.FieldDescription).FirstOrDefault(x => x.Id == customField.ID);
|
||||
|
||||
itemToUpdate.Label = customField.Label;
|
||||
itemToUpdate.Type = customField.FieldType;
|
||||
itemToUpdate.Type = customField.Type;
|
||||
itemToUpdate.Mask = customField.Mask;
|
||||
|
||||
CrmDbContext.Update(itemToUpdate);
|
||||
CrmDbContext.SaveChanges();
|
||||
}
|
||||
}
|
||||
|
||||
public void ReorderFields(int[] fieldID)
|
||||
public void ReorderFields(int[] ids)
|
||||
{
|
||||
for (int index = 0; index < fieldID.Length; index++)
|
||||
var tx = CrmDbContext.Database.BeginTransaction();
|
||||
|
||||
for (int index = 0; index < ids.Length; index++)
|
||||
{
|
||||
var itemToUpdate = Query(CrmDbContext.FieldDescription).FirstOrDefault(x => x.Id == fieldID[index]);
|
||||
var dbEntity = CrmDbContext.FieldDescription.Find(ids[index]);
|
||||
|
||||
itemToUpdate.SortOrder = index;
|
||||
|
||||
CrmDbContext.Update(itemToUpdate);
|
||||
dbEntity.SortOrder = index;
|
||||
|
||||
CrmDbContext.SaveChanges();
|
||||
}
|
||||
|
||||
tx.Commit();
|
||||
}
|
||||
|
||||
private bool HaveRelativeLink(int fieldID)
|
||||
@ -509,13 +506,17 @@ namespace ASC.CRM.Core.Dao
|
||||
if (!includeEmptyFields)
|
||||
sqlQuery = sqlQuery.Where(x => x.y != null || x.x.Type == CustomFieldType.Heading);
|
||||
|
||||
|
||||
return sqlQuery.ToList().ConvertAll(x => ToCustomField(x.x, x.y));
|
||||
|
||||
}
|
||||
|
||||
public CustomField GetFieldDescription(int fieldID)
|
||||
public CustomField GetFieldDescription(int id)
|
||||
{
|
||||
return ToCustomField(Query(CrmDbContext.FieldDescription).FirstOrDefault(x => x.Id == fieldID));
|
||||
var dbEntity = CrmDbContext.FieldDescription.Find(id);
|
||||
|
||||
if (dbEntity.TenantId != TenantID) return null;
|
||||
|
||||
return _mapper.Map<CustomField>(dbEntity);
|
||||
}
|
||||
|
||||
public List<CustomField> GetFieldsDescription(EntityType entityType)
|
||||
@ -523,7 +524,8 @@ namespace ASC.CRM.Core.Dao
|
||||
if (!_supportedEntityType.Contains(entityType))
|
||||
throw new ArgumentException();
|
||||
|
||||
var sqlQuery = Query(CrmDbContext.FieldDescription);
|
||||
var sqlQuery = Query(CrmDbContext.FieldDescription)
|
||||
.AsNoTracking();
|
||||
|
||||
if (entityType == EntityType.Company || entityType == EntityType.Person)
|
||||
{
|
||||
@ -534,26 +536,27 @@ namespace ASC.CRM.Core.Dao
|
||||
sqlQuery = sqlQuery.Where(x => x.EntityType == entityType);
|
||||
}
|
||||
|
||||
return sqlQuery.ToList().ConvertAll(x => ToCustomField(x));
|
||||
var dbEntities = sqlQuery.ToList();
|
||||
|
||||
return _mapper.Map<List<DbFieldDescription>, List<CustomField>>(dbEntities);
|
||||
}
|
||||
|
||||
public void DeleteField(int fieldID)
|
||||
public void DeleteField(int id)
|
||||
{
|
||||
//if (HaveRelativeLink(fieldID))
|
||||
// throw new ArgumentException();
|
||||
if (HaveRelativeLink(id))
|
||||
throw new ArgumentException();
|
||||
|
||||
var tx = CrmDbContext.Database.BeginTransaction();
|
||||
|
||||
var fieldDescription = new DbFieldDescription { Id = fieldID };
|
||||
var dbFieldDescription = CrmDbContext.FieldDescription.Find(id);
|
||||
|
||||
CrmDbContext.FieldDescription.Attach(fieldDescription);
|
||||
CrmDbContext.FieldDescription.Remove(fieldDescription);
|
||||
CrmDbContext.Remove(dbFieldDescription);
|
||||
|
||||
var fieldValue = Query(CrmDbContext.FieldValue).FirstOrDefault(x => x.FieldId == fieldID);
|
||||
var dbFieldValue = Query(CrmDbContext.FieldValue).FirstOrDefault(x => x.FieldId == id);
|
||||
|
||||
_factoryIndexer.Delete(fieldValue);
|
||||
_factoryIndexer.Delete(dbFieldValue);
|
||||
|
||||
CrmDbContext.Remove(fieldValue);
|
||||
CrmDbContext.Remove(dbFieldValue);
|
||||
|
||||
CrmDbContext.SaveChanges();
|
||||
|
||||
@ -561,22 +564,11 @@ namespace ASC.CRM.Core.Dao
|
||||
}
|
||||
|
||||
public CustomField ToCustomField(DbFieldDescription dbFieldDescription,
|
||||
DbFieldValue dbFieldValue = null)
|
||||
DbFieldValue dbFieldValue = null)
|
||||
{
|
||||
if (dbFieldDescription == null) return null;
|
||||
var customField = _mapper.Map<CustomField>(dbFieldDescription);
|
||||
|
||||
var customField = new CustomField
|
||||
{
|
||||
ID = dbFieldDescription.Id,
|
||||
EntityType = dbFieldDescription.EntityType,
|
||||
FieldType = dbFieldDescription.Type,
|
||||
Label = dbFieldDescription.Label,
|
||||
Mask = dbFieldDescription.Mask,
|
||||
Position = dbFieldDescription.SortOrder
|
||||
|
||||
};
|
||||
|
||||
if (dbFieldValue != null)
|
||||
if (customField != null && dbFieldValue != null)
|
||||
{
|
||||
customField.Value = dbFieldValue.Value;
|
||||
customField.EntityID = dbFieldValue.EntityId;
|
||||
|
@ -58,12 +58,12 @@ namespace ASC.CRM.Core.Dao
|
||||
[Scope]
|
||||
public class DealDao : AbstractDao
|
||||
{
|
||||
private BundleSearch _bundleSearch;
|
||||
private FilesIntegration _filesIntegration;
|
||||
private FactoryIndexerDeal _factoryIndexer;
|
||||
private TenantUtil _tenantUtil;
|
||||
private CrmSecurity _crmSecurity;
|
||||
private AuthorizationManager _authorizationManager;
|
||||
private readonly BundleSearch _bundleSearch;
|
||||
private readonly FilesIntegration _filesIntegration;
|
||||
private readonly FactoryIndexerDeal _factoryIndexer;
|
||||
private readonly TenantUtil _tenantUtil;
|
||||
private readonly CrmSecurity _crmSecurity;
|
||||
private readonly AuthorizationManager _authorizationManager;
|
||||
|
||||
public DealDao(DbContextManager<CrmDbContext> dbContextManager,
|
||||
TenantManager tenantManager,
|
||||
@ -71,6 +71,8 @@ namespace ASC.CRM.Core.Dao
|
||||
CrmSecurity crmSecurity,
|
||||
FactoryIndexerDeal factoryIndexer,
|
||||
FilesIntegration filesIntegration,
|
||||
TenantUtil tenantUtil,
|
||||
AuthorizationManager authorizationManager,
|
||||
IOptionsMonitor<ILog> logger,
|
||||
ICache ascCache,
|
||||
IMapper mapper,
|
||||
@ -87,6 +89,8 @@ namespace ASC.CRM.Core.Dao
|
||||
_filesIntegration = filesIntegration;
|
||||
_bundleSearch = bundleSearch;
|
||||
_mapper = mapper;
|
||||
_tenantUtil = tenantUtil;
|
||||
_authorizationManager = authorizationManager;
|
||||
}
|
||||
|
||||
|
||||
@ -137,6 +141,7 @@ namespace ASC.CRM.Core.Dao
|
||||
|
||||
deal.ID = result;
|
||||
|
||||
|
||||
_factoryIndexer.Index(Query(CrmDbContext.Deals).Where(x => x.Id == deal.ID).FirstOrDefault());
|
||||
|
||||
return result;
|
||||
@ -190,7 +195,9 @@ namespace ASC.CRM.Core.Dao
|
||||
|
||||
tx.Commit();
|
||||
|
||||
foreach (var deal in Query(CrmDbContext.Deals).Where(x => result.Contains(x.Id)))
|
||||
var dbDeals = Query(CrmDbContext.Deals).Where(x => result.Contains(x.Id));
|
||||
|
||||
foreach (var deal in dbDeals)
|
||||
{
|
||||
_factoryIndexer.Index(deal);
|
||||
}
|
||||
@ -209,7 +216,10 @@ namespace ASC.CRM.Core.Dao
|
||||
|
||||
// AddMember(deal.ID, deal.ContactID);
|
||||
|
||||
var itemToUpdate = Query(CrmDbContext.Deals).Single(x => x.Id == deal.ID);
|
||||
var itemToUpdate = CrmDbContext.Deals.Find(deal.ID);
|
||||
|
||||
if (itemToUpdate.TenantId != TenantID)
|
||||
throw new ArgumentException();
|
||||
|
||||
itemToUpdate.Title = deal.Title;
|
||||
itemToUpdate.Description = deal.Description;
|
||||
@ -222,18 +232,15 @@ namespace ASC.CRM.Core.Dao
|
||||
itemToUpdate.DealMilestoneProbability = deal.DealMilestoneProbability;
|
||||
itemToUpdate.ExpectedCloseDate = deal.ExpectedCloseDate;
|
||||
itemToUpdate.PerPeriodValue = deal.PerPeriodValue;
|
||||
|
||||
itemToUpdate.ActualCloseDate = _tenantUtil.DateTimeToUtc(deal.ActualCloseDate);
|
||||
itemToUpdate.LastModifedOn = _tenantUtil.DateTimeToUtc(_tenantUtil.DateTimeNow());
|
||||
itemToUpdate.LastModifedBy = _securityContext.CurrentAccount.ID;
|
||||
|
||||
CrmDbContext.Update(itemToUpdate);
|
||||
CrmDbContext.SaveChanges();
|
||||
|
||||
_factoryIndexer.Index(itemToUpdate);
|
||||
}
|
||||
|
||||
|
||||
public int GetDealsCount()
|
||||
{
|
||||
return GetDealsCount(String.Empty, Guid.Empty, 0, null, 0, null, null, DateTime.MinValue, DateTime.MinValue);
|
||||
@ -730,16 +737,19 @@ namespace ASC.CRM.Core.Dao
|
||||
return _mapper.Map<List<DbDeal>, List<Deal>>(dbDeals).FindAll(_crmSecurity.CanAccessTo);
|
||||
}
|
||||
|
||||
public Deal DeleteDeal(int dealID)
|
||||
public Deal DeleteDeal(int id)
|
||||
{
|
||||
if (dealID <= 0) return null;
|
||||
if (id <= 0) return null;
|
||||
|
||||
var deal = GetByID(dealID);
|
||||
var deal = GetByID(id);
|
||||
|
||||
if (deal == null) return null;
|
||||
|
||||
_crmSecurity.DemandDelete(deal);
|
||||
|
||||
_factoryIndexer.Delete(Query(CrmDbContext.Deals).Where(x => x.Id == dealID).Single());
|
||||
var dbEntity = CrmDbContext.Deals.Find(id);
|
||||
|
||||
_factoryIndexer.Delete(dbEntity);
|
||||
|
||||
// Delete relative keys
|
||||
_cache.Remove(new Regex(TenantID.ToString(CultureInfo.InvariantCulture) + "deals.*"));
|
||||
@ -752,6 +762,7 @@ namespace ASC.CRM.Core.Dao
|
||||
public List<Deal> DeleteBatchDeals(int[] dealID)
|
||||
{
|
||||
var deals = GetDeals(dealID).FindAll(_crmSecurity.CanDelete).ToList();
|
||||
|
||||
if (!deals.Any()) return deals;
|
||||
|
||||
// Delete relative keys
|
||||
@ -764,12 +775,14 @@ namespace ASC.CRM.Core.Dao
|
||||
public List<Deal> DeleteBatchDeals(List<Deal> deals)
|
||||
{
|
||||
deals = deals.FindAll(_crmSecurity.CanDelete).ToList();
|
||||
|
||||
if (!deals.Any()) return deals;
|
||||
|
||||
// Delete relative keys
|
||||
_cache.Remove(new Regex(TenantID.ToString(CultureInfo.InvariantCulture) + "deals.*"));
|
||||
|
||||
DeleteBatchDealsExecute(deals);
|
||||
|
||||
return deals;
|
||||
}
|
||||
|
||||
@ -778,13 +791,15 @@ namespace ASC.CRM.Core.Dao
|
||||
if (deals == null || !deals.Any()) return;
|
||||
|
||||
var dealID = deals.Select(x => x.ID).ToArray();
|
||||
|
||||
object[] filesIDs;
|
||||
|
||||
var tagdao = _filesIntegration.DaoFactory.GetTagDao<int>();
|
||||
|
||||
var tagNames = Query(CrmDbContext.RelationshipEvent)
|
||||
.Where(x => x.HaveFiles && dealID.Contains(x.EntityId) && x.EntityType == EntityType.Opportunity)
|
||||
.Select(x => string.Format("RelationshipEvent_{0}", x.Id)).ToArray();
|
||||
.Select(x => string.Format("RelationshipEvent_{0}", x.Id))
|
||||
.ToArray();
|
||||
|
||||
filesIDs = tagdao.GetTags(tagNames, TagType.System).Where(t => t.EntryType == FileEntryType.File).Select(t => t.EntryId).ToArray();
|
||||
|
||||
@ -792,19 +807,29 @@ namespace ASC.CRM.Core.Dao
|
||||
|
||||
|
||||
CrmDbContext.RemoveRange(Query(CrmDbContext.FieldValue)
|
||||
.AsNoTracking()
|
||||
.Where(x => dealID.Contains(x.EntityId) && x.EntityType == EntityType.Opportunity)
|
||||
);
|
||||
|
||||
CrmDbContext.RemoveRange(CrmDbContext.EntityContact.Where(x => dealID.Contains(x.EntityId) && x.EntityType == EntityType.Opportunity));
|
||||
CrmDbContext.RemoveRange(CrmDbContext.EntityContact
|
||||
.AsNoTracking()
|
||||
.Where(x => dealID.Contains(x.EntityId) && x.EntityType == EntityType.Opportunity));
|
||||
|
||||
CrmDbContext.RemoveRange(Query(CrmDbContext.RelationshipEvent)
|
||||
.AsNoTracking()
|
||||
.Where(x => dealID.Contains(x.EntityId) && x.EntityType == EntityType.Opportunity));
|
||||
|
||||
CrmDbContext.RemoveRange(Query(CrmDbContext.Tasks).Where(x => dealID.Contains(x.EntityId) && x.EntityType == EntityType.Opportunity));
|
||||
CrmDbContext.RemoveRange(Query(CrmDbContext.Tasks)
|
||||
.AsNoTracking()
|
||||
.Where(x => dealID.Contains(x.EntityId) && x.EntityType == EntityType.Opportunity));
|
||||
|
||||
CrmDbContext.RemoveRange(CrmDbContext.EntityTags.Where(x => dealID.Contains(x.EntityId) && x.EntityType == EntityType.Opportunity));
|
||||
CrmDbContext.RemoveRange(CrmDbContext.EntityTags
|
||||
.AsNoTracking()
|
||||
.Where(x => dealID.Contains(x.EntityId) && x.EntityType == EntityType.Opportunity));
|
||||
|
||||
CrmDbContext.RemoveRange(Query(CrmDbContext.Deals).Where(x => dealID.Contains(x.Id)));
|
||||
CrmDbContext.RemoveRange(Query(CrmDbContext.Deals)
|
||||
.AsNoTracking()
|
||||
.Where(x => dealID.Contains(x.Id)));
|
||||
|
||||
tx.Commit();
|
||||
|
||||
@ -854,19 +879,17 @@ namespace ASC.CRM.Core.Dao
|
||||
/// <summary>
|
||||
/// Test method
|
||||
/// </summary>
|
||||
/// <param name="opportunityid"></param>
|
||||
/// <param name="id"></param>
|
||||
/// <param name="creationDate"></param>
|
||||
public void SetDealCreationDate(int opportunityid, DateTime creationDate)
|
||||
public void SetDealCreationDate(int id, DateTime creationDate)
|
||||
{
|
||||
var dbDeal = new DbDeal
|
||||
{
|
||||
Id = opportunityid,
|
||||
CreateOn = _tenantUtil.DateTimeToUtc(creationDate),
|
||||
TenantId = TenantID
|
||||
};
|
||||
var dbEntity = CrmDbContext.Deals.Find(id);
|
||||
|
||||
if (dbEntity.TenantId != TenantID)
|
||||
throw new ArgumentException();
|
||||
|
||||
dbEntity.CreateOn = _tenantUtil.DateTimeToUtc(creationDate);
|
||||
|
||||
CrmDbContext.Attach(dbDeal);
|
||||
CrmDbContext.Entry(dbDeal).Property(x => x.CreateOn).IsModified = true;
|
||||
CrmDbContext.SaveChanges();
|
||||
|
||||
// Delete relative keys
|
||||
@ -876,19 +899,17 @@ namespace ASC.CRM.Core.Dao
|
||||
/// <summary>
|
||||
/// Test method
|
||||
/// </summary>
|
||||
/// <param name="opportunityid"></param>
|
||||
/// <param name="id"></param>
|
||||
/// <param name="lastModifedDate"></param>
|
||||
public void SetDealLastModifedDate(int opportunityid, DateTime lastModifedDate)
|
||||
public void SetDealLastModifedDate(int id, DateTime lastModifedDate)
|
||||
{
|
||||
var dbDeal = new DbDeal
|
||||
{
|
||||
Id = opportunityid,
|
||||
LastModifedOn = _tenantUtil.DateTimeToUtc(lastModifedDate),
|
||||
TenantId = TenantID
|
||||
};
|
||||
var dbEntity = CrmDbContext.Deals.Find(id);
|
||||
|
||||
if (dbEntity.TenantId != TenantID)
|
||||
throw new ArgumentException();
|
||||
|
||||
dbEntity.LastModifedOn = _tenantUtil.DateTimeToUtc(lastModifedDate);
|
||||
|
||||
CrmDbContext.Attach(dbDeal);
|
||||
CrmDbContext.Entry(dbDeal).Property(x => x.LastModifedOn).IsModified = true;
|
||||
CrmDbContext.SaveChanges();
|
||||
|
||||
// Delete relative keys
|
||||
|
@ -43,6 +43,7 @@ using ASC.CRM.Resources;
|
||||
using AutoMapper;
|
||||
|
||||
using Microsoft.AspNetCore.Http;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
using Microsoft.Extensions.Options;
|
||||
|
||||
#endregion
|
||||
@ -116,18 +117,13 @@ namespace ASC.CRM.Core.Dao
|
||||
|
||||
public int Create(DealMilestone item)
|
||||
{
|
||||
|
||||
if (String.IsNullOrEmpty(item.Title) || String.IsNullOrEmpty(item.Color))
|
||||
throw new ArgumentException();
|
||||
|
||||
int id;
|
||||
|
||||
using var tx = CrmDbContext.Database.BeginTransaction();
|
||||
|
||||
if (item.SortOrder == 0)
|
||||
item.SortOrder = Query(CrmDbContext.DealMilestones).Select(x => x.SortOrder).Max() + 1;
|
||||
|
||||
var itemToAdd = new DbDealMilestone
|
||||
var dbEntity = new DbDealMilestone
|
||||
{
|
||||
Title = item.Title,
|
||||
Description = item.Description,
|
||||
@ -138,27 +134,21 @@ namespace ASC.CRM.Core.Dao
|
||||
TenantId = TenantID
|
||||
};
|
||||
|
||||
CrmDbContext.DealMilestones.Add(itemToAdd);
|
||||
CrmDbContext.DealMilestones.Add(dbEntity);
|
||||
CrmDbContext.SaveChanges();
|
||||
|
||||
id = itemToAdd.Id;
|
||||
|
||||
tx.Commit();
|
||||
|
||||
return id;
|
||||
return dbEntity.Id;
|
||||
}
|
||||
|
||||
public void ChangeColor(int id, String newColor)
|
||||
{
|
||||
var itemToUpdate = new DbDealMilestone
|
||||
{
|
||||
Id = id,
|
||||
Color = newColor,
|
||||
TenantId = TenantID
|
||||
};
|
||||
var dbEntity = CrmDbContext.DealMilestones.Find(id);
|
||||
|
||||
if (dbEntity.TenantId != TenantID)
|
||||
throw new ArgumentException();
|
||||
|
||||
dbEntity.Color = newColor;
|
||||
|
||||
CrmDbContext.Attach(itemToUpdate);
|
||||
CrmDbContext.Entry(itemToUpdate).Property(x => x.Color).IsModified = true;
|
||||
CrmDbContext.SaveChanges();
|
||||
}
|
||||
|
||||
@ -167,24 +157,24 @@ namespace ASC.CRM.Core.Dao
|
||||
if (HaveContactLink(item.ID))
|
||||
throw new ArgumentException(String.Format("{0}. {1}.", CRMErrorsResource.BasicCannotBeEdited, CRMErrorsResource.DealMilestoneHasRelatedDeals));
|
||||
|
||||
var itemToUpdate = Query(CrmDbContext.DealMilestones)
|
||||
.FirstOrDefault(x => x.Id == item.ID);
|
||||
var dbEntity = CrmDbContext.DealMilestones.Find(item.ID);
|
||||
|
||||
itemToUpdate.Title = item.Title;
|
||||
itemToUpdate.Description = item.Description;
|
||||
itemToUpdate.Color = item.Color;
|
||||
itemToUpdate.Probability = item.Probability;
|
||||
itemToUpdate.Status = item.Status;
|
||||
if (dbEntity.TenantId != TenantID)
|
||||
throw new ArgumentException();
|
||||
|
||||
CrmDbContext.DealMilestones.Update(itemToUpdate);
|
||||
dbEntity.Title = item.Title;
|
||||
dbEntity.Description = item.Description;
|
||||
dbEntity.Color = item.Color;
|
||||
dbEntity.Probability = item.Probability;
|
||||
dbEntity.Status = item.Status;
|
||||
|
||||
CrmDbContext.SaveChanges();
|
||||
}
|
||||
|
||||
public bool HaveContactLink(int dealMilestoneID)
|
||||
public bool HaveContactLink(int id)
|
||||
{
|
||||
return Query(CrmDbContext.Deals)
|
||||
.Any(x => x.DealMilestoneId == dealMilestoneID);
|
||||
.Any(x => x.DealMilestoneId == id);
|
||||
}
|
||||
|
||||
public void Delete(int id)
|
||||
@ -192,23 +182,24 @@ namespace ASC.CRM.Core.Dao
|
||||
if (HaveContactLink(id))
|
||||
throw new ArgumentException(String.Format("{0}. {1}.", CRMErrorsResource.BasicCannotBeDeleted, CRMErrorsResource.DealMilestoneHasRelatedDeals));
|
||||
|
||||
var dbDealMilestones = new DbDealMilestone
|
||||
{
|
||||
Id = id,
|
||||
TenantId = TenantID
|
||||
};
|
||||
var dbEntity = CrmDbContext.DealMilestones.Find(id);
|
||||
|
||||
CrmDbContext.DealMilestones.Remove(dbDealMilestones);
|
||||
if (dbEntity.TenantId != TenantID)
|
||||
throw new ArgumentException();
|
||||
|
||||
CrmDbContext.DealMilestones.Remove(dbEntity);
|
||||
|
||||
CrmDbContext.SaveChanges();
|
||||
|
||||
}
|
||||
|
||||
public DealMilestone GetByID(int id)
|
||||
{
|
||||
var dbDealMilestone = Query(CrmDbContext.DealMilestones).FirstOrDefault(x => x.Id == id);
|
||||
var dbEntity = CrmDbContext.DealMilestones.Find(id);
|
||||
|
||||
return _mapper.Map<DbDealMilestone, DealMilestone>(dbDealMilestone);
|
||||
if (dbEntity.TenantId != TenantID)
|
||||
throw new ArgumentException();
|
||||
|
||||
return _mapper.Map<DbDealMilestone, DealMilestone>(dbEntity);
|
||||
}
|
||||
|
||||
public Boolean IsExist(int id)
|
||||
@ -219,6 +210,7 @@ namespace ASC.CRM.Core.Dao
|
||||
public List<DealMilestone> GetAll(int[] id)
|
||||
{
|
||||
var result = Query(CrmDbContext.DealMilestones)
|
||||
.AsNoTracking()
|
||||
.OrderBy(x => x.SortOrder)
|
||||
.Where(x => id.Contains(x.Id)).ToList();
|
||||
|
||||
@ -228,11 +220,11 @@ namespace ASC.CRM.Core.Dao
|
||||
public List<DealMilestone> GetAll()
|
||||
{
|
||||
var result = Query(CrmDbContext.DealMilestones)
|
||||
.AsNoTracking()
|
||||
.OrderBy(x => x.SortOrder)
|
||||
.ToList();
|
||||
|
||||
return _mapper.Map<List<DbDealMilestone>, List<DealMilestone>>(result);
|
||||
|
||||
}
|
||||
}
|
||||
}
|
@ -47,7 +47,6 @@ using ASC.Web.CRM.Core.Search;
|
||||
|
||||
using AutoMapper;
|
||||
|
||||
using Microsoft.AspNetCore.Http;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
using Microsoft.Extensions.Options;
|
||||
|
||||
@ -79,7 +78,6 @@ namespace ASC.CRM.Core.Dao
|
||||
public InvoiceDao(
|
||||
DbContextManager<CrmDbContext> dbContextManager,
|
||||
TenantManager tenantManager,
|
||||
|
||||
SecurityContext securityContext,
|
||||
FactoryIndexerInvoice factoryIndexer,
|
||||
IOptionsMonitor<ILog> logger,
|
||||
@ -111,9 +109,9 @@ namespace ASC.CRM.Core.Dao
|
||||
return IsExistFromDb(invoiceID);
|
||||
}
|
||||
|
||||
public Boolean IsExistFromDb(int invoiceID)
|
||||
public Boolean IsExistFromDb(int id)
|
||||
{
|
||||
return Query(CrmDbContext.Invoices).Where(x => x.Id == invoiceID).Any();
|
||||
return Query(CrmDbContext.Invoices).Where(x => x.Id == id).Any();
|
||||
}
|
||||
|
||||
public Boolean IsExist(string number)
|
||||
@ -139,8 +137,9 @@ namespace ASC.CRM.Core.Dao
|
||||
public List<Invoice> GetByID(int[] ids)
|
||||
{
|
||||
var dbInvoices = Query(CrmDbContext.Invoices)
|
||||
.Where(x => ids.Contains(x.Id))
|
||||
.ToList();
|
||||
.AsNoTracking()
|
||||
.Where(x => ids.Contains(x.Id))
|
||||
.ToList();
|
||||
|
||||
return _mapper.Map<List<DbInvoice>, List<Invoice>>(dbInvoices);
|
||||
}
|
||||
@ -152,12 +151,19 @@ namespace ASC.CRM.Core.Dao
|
||||
|
||||
public Invoice GetByIDFromDb(int id)
|
||||
{
|
||||
return _mapper.Map<Invoice>(Query(CrmDbContext.Invoices).FirstOrDefault(x => x.Id == id));
|
||||
var dbEntity = CrmDbContext.Invoices.Find(id);
|
||||
|
||||
if (dbEntity.TenantId != TenantID)
|
||||
throw new ArgumentException();
|
||||
|
||||
return _mapper.Map<Invoice>(dbEntity);
|
||||
}
|
||||
|
||||
public Invoice GetByNumber(string number)
|
||||
{
|
||||
return _mapper.Map<Invoice>(Query(CrmDbContext.Invoices).FirstOrDefault(x => x.Number == number));
|
||||
var dbEntity = Query(CrmDbContext.Invoices).FirstOrDefault(x => x.Number == number);
|
||||
|
||||
return _mapper.Map<Invoice>(dbEntity);
|
||||
}
|
||||
|
||||
public Invoice GetByFileId(Int32 fileID)
|
||||
@ -403,6 +409,7 @@ namespace ASC.CRM.Core.Dao
|
||||
if (ids == null || !ids.Any()) return new List<Invoice>();
|
||||
|
||||
var dbInvoices = Query(CrmDbContext.Invoices)
|
||||
.AsNoTracking()
|
||||
.Where(x => ids.Contains(x.Id))
|
||||
.ToList();
|
||||
|
||||
@ -420,8 +427,10 @@ namespace ASC.CRM.Core.Dao
|
||||
if (entityType == EntityType.Opportunity)
|
||||
{
|
||||
|
||||
var sqlQuery = Query(CrmDbContext.Invoices).Where(x => x.EntityId == entityID && x.EntityType == entityType)
|
||||
.ToList();
|
||||
var sqlQuery = Query(CrmDbContext.Invoices)
|
||||
.AsNoTracking()
|
||||
.Where(x => x.EntityId == entityID && x.EntityType == entityType)
|
||||
.ToList();
|
||||
|
||||
return _mapper.Map<List<DbInvoice>, List<Invoice>>(sqlQuery)
|
||||
.FindAll(_crmSecurity.CanAccessTo);
|
||||
@ -441,8 +450,10 @@ namespace ASC.CRM.Core.Dao
|
||||
if (contactID <= 0)
|
||||
return result;
|
||||
|
||||
var dbInvoices = Query(CrmDbContext.Invoices).Where(x => x.ContactId == contactID)
|
||||
.ToList();
|
||||
var dbInvoices = Query(CrmDbContext.Invoices)
|
||||
.AsNoTracking()
|
||||
.Where(x => x.ContactId == contactID)
|
||||
.ToList();
|
||||
|
||||
return _mapper.Map<List<DbInvoice>, List<Invoice>>(dbInvoices)
|
||||
.FindAll(_crmSecurity.CanAccessTo);
|
||||
@ -491,6 +502,8 @@ namespace ASC.CRM.Core.Dao
|
||||
|
||||
var result = SaveOrUpdateInvoiceInDb(invoice);
|
||||
|
||||
|
||||
|
||||
_factoryIndexer.Index(Query(CrmDbContext.Invoices).Where(x => x.Id == invoice.ID).Single());
|
||||
|
||||
return result;
|
||||
@ -506,81 +519,40 @@ namespace ASC.CRM.Core.Dao
|
||||
invoice.ExchangeRate <= 0 ||
|
||||
String.IsNullOrEmpty(invoice.Terms))
|
||||
throw new ArgumentException();
|
||||
|
||||
|
||||
invoice.PurchaseOrderNumber = !String.IsNullOrEmpty(invoice.PurchaseOrderNumber) ? invoice.PurchaseOrderNumber : String.Empty;
|
||||
|
||||
if (!IsExistFromDb(invoice.ID))
|
||||
|
||||
var dbEntity = new DbInvoice
|
||||
{
|
||||
if (IsExistFromDb(invoice.Number))
|
||||
throw new ArgumentException();
|
||||
Id = invoice.ID,
|
||||
Status = invoice.Status,
|
||||
Number = invoice.Number,
|
||||
IssueDate = _tenantUtil.DateTimeToUtc(invoice.IssueDate),
|
||||
TemplateType = invoice.TemplateType,
|
||||
ContactId = invoice.ContactID,
|
||||
ConsigneeId = invoice.ConsigneeID,
|
||||
EntityType = invoice.EntityType,
|
||||
EntityId = invoice.EntityID,
|
||||
DueDate = _tenantUtil.DateTimeToUtc(invoice.DueDate),
|
||||
Language = invoice.Language,
|
||||
Currency = invoice.Currency,
|
||||
ExchangeRate = invoice.ExchangeRate,
|
||||
PurchaseOrderNumber = invoice.PurchaseOrderNumber,
|
||||
Terms = invoice.Terms,
|
||||
Description = invoice.Description,
|
||||
JsonData = invoice.JsonData,
|
||||
FileId = invoice.FileID,
|
||||
CreateOn = invoice.CreateOn == DateTime.MinValue ? DateTime.UtcNow : invoice.CreateOn,
|
||||
CreateBy = _securityContext.CurrentAccount.ID,
|
||||
LastModifedOn = DateTime.UtcNow,
|
||||
LastModifedBy = _securityContext.CurrentAccount.ID,
|
||||
TenantId = TenantID
|
||||
};
|
||||
|
||||
var itemToInsert = new DbInvoice
|
||||
{
|
||||
Status = invoice.Status,
|
||||
Number = invoice.Number,
|
||||
IssueDate = _tenantUtil.DateTimeToUtc(invoice.IssueDate),
|
||||
TemplateType = invoice.TemplateType,
|
||||
ContactId = invoice.ContactID,
|
||||
ConsigneeId = invoice.ConsigneeID,
|
||||
EntityType = invoice.EntityType,
|
||||
EntityId = invoice.EntityID,
|
||||
DueDate = _tenantUtil.DateTimeToUtc(invoice.DueDate),
|
||||
Language = invoice.Language,
|
||||
Currency = invoice.Currency,
|
||||
ExchangeRate = invoice.ExchangeRate,
|
||||
PurchaseOrderNumber = invoice.PurchaseOrderNumber,
|
||||
Terms = invoice.Terms,
|
||||
Description = invoice.Description,
|
||||
JsonData = invoice.JsonData,
|
||||
FileId = invoice.FileID,
|
||||
CreateOn = invoice.CreateOn == DateTime.MinValue ? DateTime.UtcNow : invoice.CreateOn,
|
||||
CreateBy = _securityContext.CurrentAccount.ID,
|
||||
LastModifedOn = invoice.CreateOn == DateTime.MinValue ? DateTime.UtcNow : invoice.CreateOn,
|
||||
LastModifedBy = _securityContext.CurrentAccount.ID,
|
||||
TenantId = TenantID
|
||||
};
|
||||
dbEntity.PurchaseOrderNumber = !String.IsNullOrEmpty(invoice.PurchaseOrderNumber) ? invoice.PurchaseOrderNumber : String.Empty;
|
||||
|
||||
CrmDbContext.Invoices.Add(itemToInsert);
|
||||
CrmDbContext.Update(dbEntity);
|
||||
CrmDbContext.SaveChanges();
|
||||
|
||||
CrmDbContext.SaveChanges();
|
||||
|
||||
invoice.ID = itemToInsert.Id;
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
var itemToUpdate = Query(CrmDbContext.Invoices).FirstOrDefault(x => x.Id == invoice.ID);
|
||||
|
||||
var oldInvoice = _mapper.Map<Invoice>(itemToUpdate);
|
||||
|
||||
_crmSecurity.DemandEdit(oldInvoice);
|
||||
|
||||
itemToUpdate.Status = invoice.Status;
|
||||
itemToUpdate.IssueDate = _tenantUtil.DateTimeToUtc(invoice.IssueDate);
|
||||
itemToUpdate.TemplateType = invoice.TemplateType;
|
||||
itemToUpdate.ContactId = invoice.ContactID;
|
||||
itemToUpdate.ConsigneeId = invoice.ConsigneeID;
|
||||
itemToUpdate.EntityType = invoice.EntityType;
|
||||
itemToUpdate.EntityId = invoice.EntityID;
|
||||
itemToUpdate.DueDate = _tenantUtil.DateTimeToUtc(invoice.DueDate);
|
||||
itemToUpdate.Language = invoice.Language;
|
||||
itemToUpdate.Currency = invoice.Currency;
|
||||
itemToUpdate.ExchangeRate = invoice.ExchangeRate;
|
||||
itemToUpdate.PurchaseOrderNumber = invoice.PurchaseOrderNumber;
|
||||
itemToUpdate.Description = invoice.Description;
|
||||
itemToUpdate.JsonData = null;
|
||||
itemToUpdate.FileId = 0;
|
||||
itemToUpdate.LastModifedOn = DateTime.UtcNow;
|
||||
itemToUpdate.LastModifedBy = _securityContext.CurrentAccount.ID;
|
||||
itemToUpdate.TenantId = TenantID;
|
||||
|
||||
CrmDbContext.SaveChanges();
|
||||
|
||||
|
||||
}
|
||||
|
||||
return invoice.ID;
|
||||
return dbEntity.Id;
|
||||
}
|
||||
|
||||
public Invoice UpdateInvoiceStatus(int invoiceid, InvoiceStatus status)
|
||||
@ -756,12 +728,11 @@ namespace ASC.CRM.Core.Dao
|
||||
tx.Commit();
|
||||
|
||||
dbInvoicesQuery.ToList().ForEach(invoice => _factoryIndexer.Delete(invoice));
|
||||
|
||||
}
|
||||
|
||||
private IQueryable<DbInvoice> GetDbInvoceByFilters(
|
||||
ICollection<int> exceptIDs,
|
||||
String searchText,
|
||||
string searchText,
|
||||
InvoiceStatus? status,
|
||||
DateTime issueDateFrom,
|
||||
DateTime issueDateTo,
|
||||
@ -771,7 +742,8 @@ namespace ASC.CRM.Core.Dao
|
||||
int entityID,
|
||||
String currency)
|
||||
{
|
||||
var sqlQuery = Query(CrmDbContext.Invoices);
|
||||
var sqlQuery = Query(CrmDbContext.Invoices)
|
||||
.AsNoTracking();
|
||||
|
||||
if (entityID > 0)
|
||||
{
|
||||
@ -880,15 +852,16 @@ namespace ASC.CRM.Core.Dao
|
||||
/// <summary>
|
||||
/// Test method
|
||||
/// </summary>
|
||||
/// <param name="invoiceId"></param>
|
||||
/// <param name="id"></param>
|
||||
/// <param name="creationDate"></param>
|
||||
public void SetInvoiceCreationDate(int invoiceId, DateTime creationDate)
|
||||
public void SetInvoiceCreationDate(int id, DateTime creationDate)
|
||||
{
|
||||
var itemToUpdate = Query(CrmDbContext.Invoices).FirstOrDefault(x => x.Id == invoiceId);
|
||||
var dbEntity = CrmDbContext.Invoices.Find(id);
|
||||
|
||||
var entity = _mapper.Map<Invoice>(dbEntity);
|
||||
|
||||
itemToUpdate.CreateOn = _tenantUtil.DateTimeToUtc(creationDate);
|
||||
dbEntity.CreateOn = _tenantUtil.DateTimeToUtc(creationDate);
|
||||
|
||||
CrmDbContext.Invoices.Update(itemToUpdate);
|
||||
CrmDbContext.SaveChanges();
|
||||
|
||||
// Delete relative keys
|
||||
@ -898,15 +871,17 @@ namespace ASC.CRM.Core.Dao
|
||||
/// <summary>
|
||||
/// Test method
|
||||
/// </summary>
|
||||
/// <param name="invoiceId"></param>
|
||||
/// <param name="id"></param>
|
||||
/// <param name="lastModifedDate"></param>
|
||||
public void SetInvoiceLastModifedDate(int invoiceId, DateTime lastModifedDate)
|
||||
public void SetInvoiceLastModifedDate(int id, DateTime lastModifedDate)
|
||||
{
|
||||
var itemToUpdate = Query(CrmDbContext.Invoices).FirstOrDefault(x => x.Id == invoiceId);
|
||||
var dbEntity = CrmDbContext.Invoices.Find(id);
|
||||
|
||||
itemToUpdate.LastModifedOn = _tenantUtil.DateTimeToUtc(lastModifedDate);
|
||||
var entity = _mapper.Map<Invoice>(dbEntity);
|
||||
|
||||
CrmDbContext.Invoices.Update(itemToUpdate);
|
||||
_crmSecurity.DemandAccessTo(entity);
|
||||
|
||||
dbEntity.LastModifedOn = _tenantUtil.DateTimeToUtc(lastModifedDate);
|
||||
|
||||
CrmDbContext.SaveChanges();
|
||||
|
||||
|
@ -72,19 +72,19 @@ namespace ASC.CRM.Core.Dao
|
||||
_crmSecurity = crmSecurity;
|
||||
}
|
||||
|
||||
public Boolean IsExist(int invoiceItemID)
|
||||
public Boolean IsExist(int id)
|
||||
{
|
||||
return IsExistInDb(invoiceItemID);
|
||||
return IsExistInDb(id);
|
||||
}
|
||||
|
||||
public Boolean IsExistInDb(int invoiceItemID)
|
||||
public Boolean IsExistInDb(int id)
|
||||
{
|
||||
return Query(CrmDbContext.InvoiceItem).Any(x => x.Id == invoiceItemID);
|
||||
return Query(CrmDbContext.InvoiceItem).Any(x => x.Id == id);
|
||||
}
|
||||
|
||||
public Boolean CanDelete(int invoiceItemID)
|
||||
public Boolean CanDelete(int id)
|
||||
{
|
||||
return Query(CrmDbContext.InvoiceLine).Any(x => x.InvoiceItemId == invoiceItemID);
|
||||
return Query(CrmDbContext.InvoiceLine).Any(x => x.InvoiceItemId == id);
|
||||
}
|
||||
|
||||
public List<InvoiceItem> GetAll()
|
||||
|
@ -29,30 +29,32 @@
|
||||
using System;
|
||||
using System.Runtime.Serialization;
|
||||
|
||||
using ASC.Common.Mapping;
|
||||
using ASC.CRM.Core.EF;
|
||||
using ASC.CRM.Core.Enums;
|
||||
using ASC.CRM.Mapping;
|
||||
|
||||
using AutoMapper;
|
||||
|
||||
using DocuSign.eSign.Model;
|
||||
|
||||
#endregion
|
||||
|
||||
namespace ASC.CRM.Core.Entities
|
||||
{
|
||||
|
||||
[DataContract]
|
||||
public class CustomField : DomainObject
|
||||
public class CustomField : DomainObject, IMapFrom<DbFieldDescription>
|
||||
{
|
||||
[DataMember(Name = "entity_type")]
|
||||
public EntityType EntityType { get; set; }
|
||||
|
||||
[DataMember(Name = "entity_id")]
|
||||
public int EntityID { get; set; }
|
||||
public String Label { get; set; }
|
||||
public String Value { get; set; }
|
||||
public CustomFieldType FieldType { get; set; }
|
||||
public int Position { get; set; }
|
||||
public CustomFieldType Type { get; set; }
|
||||
public int SortOrder { get; set; }
|
||||
public String Mask { get; set; }
|
||||
|
||||
public override int GetHashCode()
|
||||
{
|
||||
return string.Format("{0}|{1}|{2}|{3}|{4}", GetType().FullName, ID, EntityID, Label, (int)FieldType).GetHashCode();
|
||||
return string.Format("{0}|{1}|{2}|{3}|{4}", GetType().FullName, ID, EntityID, Label, (int)Type).GetHashCode();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -29,11 +29,11 @@ namespace ASC.CRM.Mapping
|
||||
{
|
||||
Id = source.ID,
|
||||
EntityId = source.EntityID,
|
||||
FieldType = source.FieldType,
|
||||
FieldType = source.Type,
|
||||
FieldValue = source.Value,
|
||||
Label = source.Label,
|
||||
Mask = source.Mask,
|
||||
Position = source.Position,
|
||||
Position = source.SortOrder,
|
||||
RelativeItemsCount = _daoFactory.GetCustomFieldDao().GetContactLinkCount(source.EntityType, source.ID)
|
||||
};
|
||||
|
||||
|
@ -248,7 +248,7 @@ namespace ASC.Web.CRM.HttpHandlers
|
||||
customField.EntityType == EntityType.Company && isCompany ||
|
||||
customField.EntityType == EntityType.Person && !isCompany)) continue;
|
||||
|
||||
if (customField.FieldType == CustomFieldType.CheckBox)
|
||||
if (customField.Type == CustomFieldType.CheckBox)
|
||||
{
|
||||
fieldValue = fieldValue == "on" || fieldValue == "true" ? "true" : "false";
|
||||
}
|
||||
|
@ -583,7 +583,7 @@ namespace ASC.Web.CRM.Classes
|
||||
fieldsDescription.ForEach(
|
||||
item =>
|
||||
{
|
||||
if (item.FieldType == CustomFieldType.Heading) return;
|
||||
if (item.Type == CustomFieldType.Heading) return;
|
||||
|
||||
dataTable.Columns.Add(
|
||||
new DataColumn
|
||||
@ -820,7 +820,7 @@ namespace ASC.Web.CRM.Classes
|
||||
customFieldDao.GetFieldsDescription(EntityType.Opportunity).ForEach(
|
||||
item =>
|
||||
{
|
||||
if (item.FieldType == CustomFieldType.Heading) return;
|
||||
if (item.Type == CustomFieldType.Heading) return;
|
||||
|
||||
dataTable.Columns.Add(new DataColumn
|
||||
{
|
||||
@ -939,7 +939,7 @@ namespace ASC.Web.CRM.Classes
|
||||
customFieldDao.GetFieldsDescription(EntityType.Case).ForEach(
|
||||
item =>
|
||||
{
|
||||
if (item.FieldType == CustomFieldType.Heading) return;
|
||||
if (item.Type == CustomFieldType.Heading) return;
|
||||
|
||||
dataTable.Columns.Add(new DataColumn
|
||||
{
|
||||
|
@ -92,7 +92,7 @@ namespace ASC.Web.CRM.Classes
|
||||
EntityID = objCases.ID,
|
||||
EntityType = EntityType.Case,
|
||||
ID = fieldID,
|
||||
Value = field.FieldType == CustomFieldType.CheckBox ? (propertyValue == "on" || propertyValue == "true" ? "true" : "false") : propertyValue
|
||||
Value = field.Type == CustomFieldType.CheckBox ? (propertyValue == "on" || propertyValue == "true" ? "true" : "false") : propertyValue
|
||||
});
|
||||
}
|
||||
|
||||
|
@ -519,7 +519,7 @@ namespace ASC.Web.CRM.Classes
|
||||
EntityID = contact.ID,
|
||||
EntityType = contact is Person ? EntityType.Person : EntityType.Company,
|
||||
ID = fieldID,
|
||||
Value = field.FieldType == CustomFieldType.CheckBox ? (propertyValue == "on" || propertyValue == "true" ? "true" : "false") : propertyValue
|
||||
Value = field.Type == CustomFieldType.CheckBox ? (propertyValue == "on" || propertyValue == "true" ? "true" : "false") : propertyValue
|
||||
});
|
||||
}
|
||||
}
|
||||
|
@ -257,7 +257,7 @@ namespace ASC.Web.CRM.Classes
|
||||
EntityID = obj.ID,
|
||||
EntityType = EntityType.Opportunity,
|
||||
ID = fieldID,
|
||||
Value = field.FieldType == CustomFieldType.CheckBox ? (propertyValue == "on" || propertyValue == "true" ? "true" : "false") : propertyValue
|
||||
Value = field.Type == CustomFieldType.CheckBox ? (propertyValue == "on" || propertyValue == "true" ? "true" : "false") : propertyValue
|
||||
});
|
||||
}
|
||||
}
|
||||
|
@ -1082,10 +1082,10 @@ namespace ASC.Web.CRM.Classes
|
||||
|
||||
foreach (var customField in customFields)
|
||||
{
|
||||
if (customField.FieldType == CustomFieldType.SelectBox) continue;
|
||||
if (customField.FieldType == CustomFieldType.CheckBox) continue;
|
||||
if (customField.Type == CustomFieldType.SelectBox) continue;
|
||||
if (customField.Type == CustomFieldType.CheckBox) continue;
|
||||
|
||||
if (customField.FieldType == CustomFieldType.Heading)
|
||||
if (customField.Type == CustomFieldType.Heading)
|
||||
{
|
||||
if (!String.IsNullOrEmpty(customField.Label))
|
||||
category = customField.Label;
|
||||
|
Loading…
Reference in New Issue
Block a user