public void UndoDelete(object entity) { UndoDeleteCareTeamDataRequest request = (UndoDeleteCareTeamDataRequest)entity; try { using (var ctx = new ContactCareTeamMongoContext(_dbName)) { var query = MB.Query <MEContactCareTeam> .EQ(b => b.Id, ObjectId.Parse(request.Id)); var builder = new List <MB.UpdateBuilder>(); builder.Add(MB.Update.Set(MEContactCareTeam.TTLDateProperty, BsonNull.Value)); builder.Add(MB.Update.Set(MEContactCareTeam.DeleteFlagProperty, false)); builder.Add(MB.Update.Set(MEContactCareTeam.LastUpdatedOnProperty, DateTime.UtcNow)); builder.Add(MB.Update.Set(MEContactCareTeam.LastUpdatedByProperty, ObjectId.Parse(this.UserId))); IMongoUpdate update = MB.Update.Combine(builder); ctx.CareTeam.Collection.Update(query, update); AuditHelper.LogDataAudit(this.UserId, MongoCollectionName.CareMember.ToString(), request.Id.ToString(), Common.DataAuditType.UndoDelete, request.ContractNumber); } } catch (Exception) { throw; } }
public bool CareTeamMemberContactExist(string careTeamId, string contactId) { var res = false; try { using (var ctx = new ContactCareTeamMongoContext(_dbName)) { ObjectId cid; ObjectId mid; if (ObjectId.TryParse(careTeamId, out cid) && ObjectId.TryParse(contactId, out mid)) { var careTeam = GetCareTeam(careTeamId); if (careTeam != null) { var currentMeCareTeamMember = careTeam.MeCareTeamMembers.FirstOrDefault( x => x.ContactId == mid); res = currentMeCareTeamMember != null; } } } } catch (Exception) { throw; } return(res); }
private MEContactCareTeam GetCareTeam(string careTeamId) { MEContactCareTeam res = null; try { using (var ctx = new ContactCareTeamMongoContext(_dbName)) { ObjectId cid; if (ObjectId.TryParse(careTeamId, out cid)) { var queries = new List <IMongoQuery> { MB.Query <MEContactCareTeam> .EQ(c => c.Id, cid), MB.Query <MEContactCareTeam> .EQ(c => c.DeleteFlag, false) }; var query = MB.Query.And(queries); var careTeam = ctx.CareTeam.Collection.FindOne(query); res = careTeam; } } } catch (Exception) { throw; } return(res); }
public void Delete(object entity) { var request = (DeleteCareTeamDataRequest)entity; using (var ctx = new ContactCareTeamMongoContext(_dbName)) { var queries = new List <IMongoQuery> { MB.Query <MEContactCareTeam> .EQ(c => c.Id, ObjectId.Parse(request.Id)), MB.Query <MEContactCareTeam> .EQ(c => c.DeleteFlag, false) }; var query = MB.Query.And(queries); var contactCareTeam = ctx.CareTeam.Collection.FindOne(query); var builder = new List <MB.UpdateBuilder>(); builder.Add(MB.Update.Set(MEContactCareTeam.TTLDateProperty, DateTime.UtcNow.AddDays(_expireDays))); builder.Add(MB.Update.Set(MEContactCareTeam.DeleteFlagProperty, true)); builder.Add(MB.Update.Set(MEContactCareTeam.LastUpdatedOnProperty, DateTime.UtcNow)); builder.Add(MB.Update.Set(MEContactCareTeam.LastUpdatedByProperty, ObjectId.Parse(this.UserId))); IMongoUpdate update = MB.Update.Combine(builder); ctx.CareTeam.Collection.Update(query, update); AuditHelper.LogDataAudit(this.UserId, MongoCollectionName.CareTeam.ToString(), contactCareTeam.Id.ToString(), DataAuditType.Delete, request.ContractNumber); } }
public string AddCareTeamMember(AddCareTeamMemberDataRequest request) { var id = string.Empty; try { if (request.CareTeamMemberData != null) { using (var ctx = new ContactCareTeamMongoContext(_dbName)) { var contactCareTeam = GetContactCareTeam(request.ContactId); if (contactCareTeam == null) { throw new ApplicationException( "AddCareTeamMember: The referenced contact doesn't have a care team"); } if (contactCareTeam.Id != ObjectId.Parse(request.CareTeamId)) { throw new ApplicationException( "AddCareTeamMember: The referenced Care Team doesn't exist or is not assigned to the referenced contact"); } var memberToAdd = BuildMECareTeamMember(this.UserId, request.CareTeamMemberData); memberToAdd.RecordCreatedOn = DateTime.UtcNow; memberToAdd.RecordCreatedBy = ObjectId.Parse(request.UserId); contactCareTeam.MeCareTeamMembers.Add(memberToAdd); ctx.CareTeam.Collection.Save(contactCareTeam); AuditHelper.LogDataAudit(this.UserId, MongoCollectionName.CareTeam.ToString(), contactCareTeam.Id.ToString(), DataAuditType.Update, request.ContractNumber); id = memberToAdd.Id.ToString(); } } } catch (Exception ex) { } return(id); }
public void DeleteCareTeamMember(object entity) { var request = (DeleteCareTeamMemberDataRequest)entity; using (var ctx = new ContactCareTeamMongoContext(_dbName)) { var queries = new List <IMongoQuery> { MB.Query <MEContactCareTeam> .EQ(c => c.ContactId, ObjectId.Parse(request.ContactId)), MB.Query <MEContactCareTeam> .EQ(c => c.Id, ObjectId.Parse(request.CareTeamId)), MB.Query <MEContactCareTeam> .EQ(c => c.DeleteFlag, false) }; var query = MB.Query.And(queries); var contactCareTeam = ctx.CareTeam.Collection.FindOne(query); if (contactCareTeam == null) { throw new Exception(string.Format("No care team exists with Id : {0}", request.CareTeamId)); } var members = contactCareTeam.MeCareTeamMembers; var memberToRemove = members.FirstOrDefault(m => m.Id == ObjectId.Parse(request.MemberId)); if (memberToRemove == null) { return; } members.Remove(memberToRemove); contactCareTeam.MeCareTeamMembers = members; contactCareTeam.LastUpdatedOn = DateTime.UtcNow; contactCareTeam.UpdatedBy = ObjectId.Parse(this.UserId); var saveResult = ctx.CareTeam.Collection.Save(contactCareTeam); AuditHelper.LogDataAudit(this.UserId, MongoCollectionName.CareTeam.ToString(), contactCareTeam.Id.ToString(), DataAuditType.Update, request.ContractNumber); } }
public object GetCareTeamByContactId(string contactId) { CareTeamData careTeam = null; using (var ctx = new ContactCareTeamMongoContext(_dbName)) { var queries = new List <IMongoQuery> { MB.Query <MEContactCareTeam> .EQ(c => c.ContactId, ObjectId.Parse(contactId)), MB.Query <MEContactCareTeam> .EQ(c => c.DeleteFlag, false) }; var query = MB.Query.And(queries); var meCareTeam = ctx.CareTeam.Collection.FindOne(query); if (meCareTeam != null) { careTeam = BuildCareTeamData(meCareTeam); } } return(careTeam); }
public IEnumerable <CareTeamData> GetCareTeamsByContactIds(List <string> contactIds) { List <CareTeamData> contactDataList = null; try { using (var ctx = new ContactCareTeamMongoContext(_dbName)) { List <IMongoQuery> queries = new List <IMongoQuery>(); List <BsonValue> bsonList = Helper.ConvertToBsonValueList(contactIds); if (bsonList != null) { queries.Add(MB.Query.In(MEContactCareTeam.ContactIdProperty, bsonList)); queries.Add(MB.Query.EQ(MEContactCareTeam.DeleteFlagProperty, false)); IMongoQuery mQuery = MB.Query.And(queries); List <MEContactCareTeam> meContacts = ctx.CareTeam.Collection.Find(mQuery).ToList(); if (meContacts != null && meContacts.Count > 0) { contactDataList = new List <CareTeamData>(); foreach (var c in meContacts) { var careTeamData = BuildCareTeamData(c); if (careTeamData != null) { contactDataList.Add(careTeamData); } } } } } } catch (Exception ex) { throw; } return(contactDataList); }
public object Insert(object newEntity) { var careTeam = new object(); var data = newEntity as SaveCareTeamDataRequest; if (data != null) { try { using (var ctx = new ContactCareTeamMongoContext(_dbName)) { var queries = new List <IMongoQuery> { MB.Query <MEContactCareTeam> .EQ(c => c.ContactId, ObjectId.Parse(data.ContactId)), MB.Query <MEContactCareTeam> .EQ(c => c.DeleteFlag, false) }; var query = MB.Query.And(queries); var contactCareTeam = ctx.CareTeam.Collection.FindOne(query); if (contactCareTeam == null) { //Add var meCareTeam = new MEContactCareTeam(this.UserId, DateTime.UtcNow) { ContactId = ObjectId.Parse(data.ContactId), MeCareTeamMembers = BuildMECareTeamMembers(data.CareTeamData.Members, this.UserId), DeleteFlag = false }; ctx.CareTeam.Collection.Save(meCareTeam); // response = meCareTeam.Id.ToString(); AuditHelper.LogDataAudit(this.UserId, MongoCollectionName.CareTeam.ToString(), meCareTeam.Id.ToString(), DataAuditType.Insert, data.ContractNumber); } else { var oldMembers = contactCareTeam.MeCareTeamMembers; //Update contactCareTeam.MeCareTeamMembers = BuildMECareTeamMembers(data.CareTeamData.Members, this.UserId); contactCareTeam.UpdatedBy = ObjectId.Parse(this.UserId); contactCareTeam.LastUpdatedOn = DateTime.UtcNow; foreach (var m in oldMembers) { var newmember = contactCareTeam.MeCareTeamMembers.FirstOrDefault(c => c.Id == m.Id); if (newmember != null) { newmember.RecordCreatedBy = m.RecordCreatedBy; newmember.RecordCreatedOn = m.RecordCreatedOn; } } var addingMembers = contactCareTeam.MeCareTeamMembers.Except(oldMembers); foreach (var member in addingMembers) { if (member.RecordCreatedBy == ObjectId.Empty) { member.RecordCreatedBy = ObjectId.Parse(this.UserId); } if (member.RecordCreatedOn == DateTime.MinValue || member.RecordCreatedOn == null) { member.RecordCreatedOn = DateTime.UtcNow; } } ctx.CareTeam.Collection.Save(contactCareTeam); //response = contactCareTeam.Id.ToString(); AuditHelper.LogDataAudit(this.UserId, MongoCollectionName.CareTeam.ToString(), contactCareTeam.Id.ToString(), DataAuditType.Update, data.ContractNumber); } careTeam = GetCareTeamByContactId(data.ContactId); if (careTeam == null) { throw new Exception("Care Team is null or empty"); } } } catch (Exception ex) { throw ex; } } return(careTeam); }
public bool UpdateCareTeamMember(object entity) { UpdateCareTeamMemberDataRequest request = (UpdateCareTeamMemberDataRequest)entity; CareTeamMemberData careTeamMemberData = request.CareTeamMemberData; bool result = false; try { if (careTeamMemberData != null) { using (ContactCareTeamMongoContext ctx = new ContactCareTeamMongoContext(_dbName)) { var contactCareTeam = GetContactCareTeam(request.ContactId); if (contactCareTeam == null) { throw new ApplicationException( "UpdateCareTeamMember: The referenced contact doesn't have a care team"); } if (contactCareTeam.Id != ObjectId.Parse(request.CareTeamId)) { throw new ApplicationException( "UpdateCareTeamMember: The referenced Care Team doesn't exist or is not assigned to the referenced contact"); } var currentMeCareTeamMember = contactCareTeam.MeCareTeamMembers.FirstOrDefault( x => x.Id == ObjectId.Parse(careTeamMemberData.Id)); if (currentMeCareTeamMember == null) { throw new ApplicationException( "UpdateCareTeamMember: The referenced care team member doesn't exist"); } var memberIndex = contactCareTeam.MeCareTeamMembers.FindIndex( x => x.Id == ObjectId.Parse(careTeamMemberData.Id)); var updatedMecareMemberTeam = BuildMECareTeamMember(this.UserId, careTeamMemberData); updatedMecareMemberTeam.RecordCreatedOn = currentMeCareTeamMember.RecordCreatedOn; updatedMecareMemberTeam.RecordCreatedBy = currentMeCareTeamMember.RecordCreatedBy; contactCareTeam.MeCareTeamMembers[memberIndex] = updatedMecareMemberTeam; contactCareTeam.LastUpdatedOn = DateTime.UtcNow; contactCareTeam.UpdatedBy = ObjectId.Parse(this.UserId); ctx.CareTeam.Collection.Save(contactCareTeam); AuditHelper.LogDataAudit(this.UserId, MongoCollectionName.CareTeam.ToString(), contactCareTeam.Id.ToString(), DataAuditType.Update, request.ContractNumber); result = true; } } return(result); } catch (ApplicationException ex) { throw new ApplicationException(ex.Message); } catch (Exception ex) { throw new Exception("CareMemberDD:MongoCareMemberRepository:Update()" + ex.Message, ex.InnerException); } }
public override void Execute() { try { OnDocColEvent(new ETLEventArgs { Message = "[" + Contract + "] Loading CareTeam.", IsError = false }); ConcurrentBag <ECareTeam> eCareTeams = new ConcurrentBag <ECareTeam>(); ConcurrentBag <MEContactCareTeam> meContactCareTeams; using (var ctx = new ContactCareTeamMongoContext(Contract)) { meContactCareTeams = new ConcurrentBag <MEContactCareTeam>(ctx.CareTeam.Collection.FindAllAs <MEContactCareTeam>().ToList()); } Parallel.ForEach(meContactCareTeams, ct => { try { if (ct.MeCareTeamMembers != null && ct.MeCareTeamMembers.Count > 0) { var careMembers = ct.MeCareTeamMembers; foreach (var cm in careMembers) { eCareTeams.Add(new ECareTeam { //Populating these fields from CareTeam MongoCareTeamId = ct.Id.ToString(), MongoContactIdForPatient = ct.ContactId.ToString(), Version = ct.Version, DeleteFlag = ct.DeleteFlag, TTLDate = ct.TTLDate, //Populating these fields from the CareTeam's CareMember. MongoCareMemberId = cm.Id.ToString(), MongoContactIdForCareMember = cm.ContactId.ToString(), RoleId = cm.RoleId == null ? null : cm.RoleId.ToString(), CustomRoleName = cm.CustomRoleName, StartDate = cm.StartDate, EndDate = cm.EndDate, Core = cm.Core, Notes = cm.Notes, FrequencyId = cm.Frequency == null ? null : cm.Frequency.ToString(), Distance = cm.Distance, DistanceUnit = cm.DistanceUnit, DataSource = cm.DataSource, ExternalRecordId = cm.ExternalRecordId, Status = cm.Status.ToString(), UpdatedBy = cm.UpdatedBy == null ? null : cm.UpdatedBy.ToString(), LastUpdatedOn = cm.LastUpdatedOn, RecordCreatedBy = cm.RecordCreatedBy.ToString(), RecordCreatedOn = cm.RecordCreatedOn, }); } } } catch (Exception ex) { OnDocColEvent(new ETLEventArgs { Message = "[" + Contract + "] " + ex.Message + ": " + ex.StackTrace, IsError = true }); } }); SaveSubcollection(eCareTeams); } catch (Exception ex) { throw ex; } }