public PutUpdateTaskResponse UpdatePatientTask(PutUpdateTaskRequest request) { try { PutUpdateTaskResponse result = new PutUpdateTaskResponse(); IGoalRepository repo = Factory.GetRepository(request, RepositoryType.PatientTask); if (request.TaskIdsList != null && request.TaskIdsList.Count > 0) { List <PatientTaskData> ptd = (List <PatientTaskData>)repo.Find(request.PatientGoalId); List <string> dbTaskIdList = GetTaskIds(ptd); // update existing task entries with a delete List <string> excludes = dbTaskIdList.Except(request.TaskIdsList).ToList <string>(); excludes.ForEach(ex => { // create delete task request to insert DeleteTaskDataRequest dtr = new DeleteTaskDataRequest { TaskId = ex, UserId = request.UserId }; repo.Delete(dtr); }); } if (request.Task != null && request.Task.Id != "0") { bool status = (bool)repo.Update(request); if (status) { PatientTaskData data = repo.FindByID(request.Task.Id) as PatientTaskData; result.TaskData = data; } } return(result); } catch (Exception ex) { throw ex; } }
public PutUpdateTaskResponse Put(PutUpdateTaskRequest request) { PutUpdateTaskResponse response = new PutUpdateTaskResponse(); try { if (string.IsNullOrEmpty(request.UserId)) { throw new UnauthorizedAccessException("PatientGoalDD:Put()::Unauthorized Access"); } response = Manager.UpdatePatientTask(request); response.Version = request.Version; } catch (Exception ex) { CommonFormatter.FormatExceptionResponse(response, base.Response, ex); string aseProcessID = ConfigurationManager.AppSettings.Get("ASEProcessID") ?? "0"; Common.Helper.LogException(int.Parse(aseProcessID), ex); } return(response); }
public object Update(object entity) { bool result = false; PutUpdateTaskRequest ptr = (PutUpdateTaskRequest)entity; PatientTaskData pt = ptr.Task; try { using (PatientGoalMongoContext ctx = new PatientGoalMongoContext(_dbName)) { var q = MB.Query <MEPatientTask> .EQ(b => b.Id, ObjectId.Parse(pt.Id)); // Set the StatusDate to Now if the status is changed. Set the ClosedDate depending on the Status. MEPatientTask existingPB = ctx.PatientTasks.Collection.Find(q).SetFields(MEPatientTask.StatusProperty).FirstOrDefault(); if (existingPB != null) { if ((int)existingPB.Status != pt.StatusId) { pt.StatusDate = DateTime.UtcNow; } if ((pt.StatusId == (int)GoalTaskStatus.Met || pt.StatusId == (int)GoalTaskStatus.Abandoned)) { if (existingPB.Status != (GoalTaskStatus)pt.StatusId) { pt.ClosedDate = DateTime.UtcNow; } } else { pt.ClosedDate = null; } } var uv = new List <MB.UpdateBuilder>(); uv.Add(MB.Update.Set(MEPatientTask.UpdatedByProperty, ObjectId.Parse(this.UserId))); uv.Add(MB.Update.Set(MEPatientTask.VersionProperty, ptr.Version)); uv.Add(MB.Update.Set(MEPatientTask.LastUpdatedOnProperty, System.DateTime.UtcNow)); if (pt.Description != null) { uv.Add(MB.Update.Set(MEPatientTask.DescriptionProperty, pt.Description)); } if (pt.Details != null) { uv.Add(MB.Update.Set(MEPatientTask.DetailProperty, pt.Details)); } if (pt.StartDate != null) { uv.Add(MB.Update.Set(MEPatientTask.StartDateProperty, pt.StartDate)); } else { uv.Add(MB.Update.Set(MEPatientTask.StartDateProperty, BsonNull.Value)); } if (pt.StatusDate != null) { uv.Add(MB.Update.Set(MEPatientTask.StatusDateProperty, pt.StatusDate)); } if (pt.StatusId != 0) { uv.Add(MB.Update.Set(MEPatientTask.StatusProperty, pt.StatusId)); } if (pt.TargetDate != null) { uv.Add(MB.Update.Set(MEPatientTask.TargetDateProperty, pt.TargetDate)); } else { uv.Add(MB.Update.Set(MEPatientTask.TargetDateProperty, BsonNull.Value)); } if (pt.TargetValue != null) { uv.Add(MB.Update.Set(MEPatientTask.TargetValueProperty, pt.TargetValue)); } if (pt.CustomAttributes != null) { uv.Add(MB.Update.SetWrapped <List <MAttribute> >(MEPatientTask.AttributesProperty, DTOUtil.GetAttributes(pt.CustomAttributes))); } if (pt.BarrierIds != null) { uv.Add(MB.Update.SetWrapped <List <ObjectId> >(MEPatientTask.BarriersProperty, DTOUtil.ConvertObjectId(pt.BarrierIds))); } if (pt.ClosedDate != null) { uv.Add(MB.Update.Set(MEPatientTask.ClosedDateProperty, pt.ClosedDate)); } else { uv.Add(MB.Update.Set(MEPatientTask.ClosedDateProperty, BsonNull.Value)); } uv.Add(MB.Update.Set(MEPatientTask.DeleteFlagProperty, pt.DeleteFlag)); if (pt.TemplateId != null) { uv.Add(MB.Update.Set(MEPatientTask.TemplateIdProperty, ObjectId.Parse(pt.TemplateId))); } DataAuditType type; if (pt.DeleteFlag) { uv.Add(MB.Update.Set(MEPatientTask.TTLDateProperty, System.DateTime.UtcNow.AddDays(_expireDays))); type = Common.DataAuditType.Delete; } else { uv.Add(MB.Update.Set(MEPatientTask.TTLDateProperty, BsonNull.Value)); type = Common.DataAuditType.Update; } IMongoUpdate update = MB.Update.Combine(uv); ctx.PatientTasks.Collection.Update(q, update); AuditHelper.LogDataAudit(this.UserId, MongoCollectionName.PatientTask.ToString(), pt.Id, type, ptr.ContractNumber); result = true; } return(result as object); } catch (Exception) { throw; } }