crm: refactoring

This commit is contained in:
Alexey Bannov 2021-05-17 19:32:05 +03:00
parent bbe1f1f205
commit 86a7802ada
4 changed files with 37 additions and 29 deletions

View File

@ -1210,22 +1210,24 @@ namespace ASC.CRM.Core.Dao
public void UpdateContactStatus(IEnumerable<int> contactid, int statusid)
{
foreach (var item in contactid)
var tx = CrmDbContext.Database.BeginTransaction();
foreach (var id in contactid)
{
var itemToUpdate = new DbContact
{
Id = item,
StatusId = statusid,
TenantId = TenantID
};
var dbEntity = CrmDbContext.Contacts.Find(id);
CrmDbContext.Attach(itemToUpdate);
CrmDbContext.Entry(itemToUpdate).Property(x => x.StatusId).IsModified = true;
if (dbEntity.TenantId != TenantID)
throw new ArgumentException();
dbEntity.Id = id;
dbEntity.StatusId = statusid;
}
CrmDbContext.SaveChanges();
tx.Commit();
// Delete relative keys
_cache.Remove(new Regex(TenantID.ToString(CultureInfo.InvariantCulture) + "contacts.*"));
}
@ -1307,25 +1309,20 @@ namespace ASC.CRM.Core.Dao
{
if (contactId <= 0) throw new ArgumentException();
var itemToUpdate = new DbContact
{
Id = contactId,
IsShared = isShared ? ShareType.ReadWrite : ShareType.None,
TenantId = TenantID
};
var dbEntity = CrmDbContext.Contacts.Find(contactId);
dbEntity.IsShared = isShared ? ShareType.ReadWrite : ShareType.None;
CrmDbContext.Attach(itemToUpdate);
CrmDbContext.Entry(itemToUpdate).Property(x => x.IsShared).IsModified = true;
CrmDbContext.SaveChanges();
}
public int SaveContact(Contact contact)
{
var result = SaveContactToDb(contact);
_factoryIndexerContact.Index(Query(CrmDbContext.Contacts)
.Where(x => x.Id == contact.ID).Single());
var dbEntity = CrmDbContext.Contacts.Find(contact.ID);
_factoryIndexerContact.Index(dbEntity);
// Delete relative keys
_cache.Remove(new Regex(TenantID.ToString(CultureInfo.InvariantCulture) + "contacts.*"));
@ -1537,8 +1534,9 @@ namespace ASC.CRM.Core.Dao
_crmSecurity.DemandDelete(contact);
_factoryIndexerContact.Delete(Query(CrmDbContext.Contacts)
.Where(x => x.Id == contactID).Single());
var dbEntity = CrmDbContext.Contacts.Find(contactID);
_factoryIndexerContact.Delete(dbEntity);
DeleteBatchContactsExecute(new List<Contact>() { contact });

View File

@ -111,8 +111,12 @@ namespace ASC.CRM.Core.Dao
{
var result = UpdateInDb(contactInfo);
_factoryIndexerContactInfo.Update(Query(CrmDbContext.ContactsInfo)
.Where(x => x.ContactId == contactInfo.ID).Single());
var dbEntity = Query(CrmDbContext.ContactsInfo)
.AsNoTracking()
.Where(x => x.ContactId == contactInfo.ID)
.Single();
_factoryIndexerContactInfo.Update(dbEntity);
return result;
}
@ -135,7 +139,7 @@ namespace ASC.CRM.Core.Dao
TenantId = TenantID
};
CrmDbContext.ContactsInfo.Update(itemToUpdate);
CrmDbContext.Update(itemToUpdate);
CrmDbContext.SaveChanges();
@ -149,11 +153,12 @@ namespace ASC.CRM.Core.Dao
contactInfo.ID = id;
var dbContactInfo = Query(CrmDbContext.ContactsInfo)
var dbEntity = Query(CrmDbContext.ContactsInfo)
.AsNoTracking()
.Where(x => x.ContactId == contactInfo.ID)
.Single();
_factoryIndexerContactInfo.Index(dbContactInfo);
_factoryIndexerContactInfo.Index(dbEntity);
return id;
}
@ -204,7 +209,8 @@ namespace ASC.CRM.Core.Dao
public List<ContactInfo> GetList(int contactID, ContactInfoType? infoType, int? categoryID, bool? isPrimary)
{
var items = Query(CrmDbContext.ContactsInfo);
var items = Query(CrmDbContext.ContactsInfo)
.AsNoTracking();
if (contactID > 0)
items = items.Where(x => x.ContactId == contactID);

View File

@ -79,7 +79,9 @@ namespace ASC.CRM.Core.Dao
for (int index = 0; index < ids.Length; index++)
{
var itemToUpdate = Query(CrmDbContext.DealMilestones).FirstOrDefault(x => x.Id == ids[index]);
var itemToUpdate = CrmDbContext.DealMilestones.Find(ids[index]);
if (itemToUpdate.TenantId != TenantID) continue;
itemToUpdate.SortOrder = index;

View File

@ -226,6 +226,8 @@ namespace ASC.CRM.Core.Dao
{
var dbEntity = CrmDbContext.TaskTemplateContainer.Find(id);
if (dbEntity.TenantId != TenantID) return;
CrmDbContext.Remove(dbEntity);
CrmDbContext.SaveChanges();