public DeleteToDoByPatientIdDataResponse DeleteToDoByPatientId(DeleteToDoByPatientIdDataRequest request) { DeleteToDoByPatientIdDataResponse response = new DeleteToDoByPatientIdDataResponse(); try { ISchedulingRepository repo = Factory.GetRepository(request, RepositoryType.ToDo); GetToDosDataRequest getToDosDataRequest = new GetToDosDataRequest { PatientId = request.PatientId, Context = request.Context, ContractNumber = request.ContractNumber, UserId = request.UserId, Version = request.Version }; GetToDosDataResponse toDosResponse = repo.FindToDos(getToDosDataRequest); List <ToDoData> patientToDos = (List <ToDoData>)toDosResponse.ToDos; //repo.FindToDos(getToDosDataRequest); List <string> deletedIds = null; if (patientToDos != null) { deletedIds = new List <string>(); patientToDos.ForEach(u => { request.Id = u.Id; repo.Delete(request); deletedIds.Add(request.Id); }); response.DeletedIds = deletedIds; } response.Success = true; return(response); } catch (Exception ex) { throw ex; } }
public GetToDosDataResponse FindToDos(object request) { GetToDosDataResponse response = new GetToDosDataResponse(); List <ToDoData> todoList = null; GetToDosDataRequest dataRequest = (GetToDosDataRequest)request; todoList = new List <ToDoData>(); todoList.Add(new ToDoData { AssignedToId = "535ad70ad2d8e912e857525c", CategoryId = "532b64b1a381168abe000a7d", ClosedDate = DateTime.UtcNow, CreatedById = "532b678fa381168abe000ce8", CreatedOn = DateTime.UtcNow, Description = "test description", DueDate = DateTime.UtcNow, StartTime = DateTime.UtcNow, Duration = 20, Id = "532b6320a381168abe000877", PatientId = "532b645fa381168abe0009e9", PriorityId = (int)Priority.High, StatusId = (int)Status.Met, Title = "test title", UpdatedOn = DateTime.UtcNow, DeleteFlag = true }); response.ToDos = todoList; response.TotalCount = 1; return(response); }
public void GetToDos_Test() { GetToDosDataRequest request = new GetToDosDataRequest { Context = context, ContractNumber = contractNumber, UserId = userId, Version = version, StatusIds = new List <int> { 1, 3 }, CreatedById = userId }; ISchedulingDataManager cm = new StubToDoDataManager { Factory = new StubSchedulingRepositoryFactory() }; GetToDosDataResponse response = cm.GetToDos(request); Assert.IsNotNull(response); }
public GetToDosDataResponse Post(GetToDosDataRequest request) { GetToDosDataResponse response = new GetToDosDataResponse(); try { if (string.IsNullOrEmpty(request.UserId)) { throw new UnauthorizedAccessException("SchedulingDD:Post()::Unauthorized Access"); } response = Manager.GetToDos(request); response.Version = request.Version; } catch (Exception ex) { FormatUtil.FormatExceptionResponse(response, base.Response, ex); string aseProcessID = ConfigurationManager.AppSettings.Get("ASEProcessID") ?? "0"; Helpers.LogException(int.Parse(aseProcessID), ex); } return(response); }
public GetToDosDataResponse FindToDos(object request) { GetToDosDataResponse response = new GetToDosDataResponse(); List <ToDoData> todoList = null; GetToDosDataRequest dataRequest = (GetToDosDataRequest)request; try { using (SchedulingMongoContext ctx = new SchedulingMongoContext(_dbName)) { List <IMongoQuery> queries = new List <IMongoQuery>(); queries.Add(Query.EQ(METoDo.DeleteFlagProperty, false)); if (!string.IsNullOrEmpty(dataRequest.AssignedToId)) { ObjectId ato; if (ObjectId.TryParse(dataRequest.AssignedToId, out ato)) { queries.Add(Query.EQ(METoDo.AssignedToProperty, ato)); } else { // Fix for bug - ENG-1068, UI sends AssignedToId = -1 to query on all unassigned ToDos. if (string.Compare(dataRequest.AssignedToId, "-1", true) == 0) { //queries.Add(Query.Or(Query.EQ(METoDo.AssignedToProperty, BsonNull.Value), Query.EQ(METoDo.AssignedToProperty, BsonString.Empty))); queries.Add(Query.In(METoDo.AssignedToProperty, new BsonArray { BsonNull.Value, BsonString.Empty })); } } } if (!string.IsNullOrEmpty(dataRequest.NotAssignedToId)) { ObjectId nto; if (ObjectId.TryParse(dataRequest.NotAssignedToId, out nto)) { queries.Add(Query.NotIn(METoDo.AssignedToProperty, new BsonArray { nto, BsonNull.Value, BsonString.Empty })); } } if (!string.IsNullOrEmpty(dataRequest.CreatedById)) { queries.Add(Query.EQ(METoDo.RecordCreatedByProperty, ObjectId.Parse(dataRequest.CreatedById))); } if (!string.IsNullOrEmpty(dataRequest.PatientId)) { queries.Add(Query.EQ(METoDo.PatientIdProperty, ObjectId.Parse(dataRequest.PatientId))); } if (dataRequest.StatusIds != null && dataRequest.StatusIds.Count > 0) { queries.Add(Query.In(METoDo.StatusProperty, new BsonArray(dataRequest.StatusIds))); } if (dataRequest.PriorityIds != null && dataRequest.PriorityIds.Count > 0) { queries.Add(Query.In(METoDo.PriorityProperty, new BsonArray(dataRequest.PriorityIds))); //integer values (not object ids) } if (dataRequest.CategoryIds != null && dataRequest.CategoryIds.Count > 0) { List <BsonValue> categories = new List <BsonValue>(); foreach (string categoryId in dataRequest.CategoryIds) { if (categoryId.Length > 0) { categories.Add(BsonValue.Create(ObjectId.Parse(categoryId))); } else { categories.Add(BsonNull.Value); //empty string => include null categories ( not set ) } } queries.Add(Query.In(METoDo.CatgegoryProperty, categories)); } if (dataRequest.FromDate != null) { queries.Add(Query.GTE(METoDo.ClosedDateProperty, dataRequest.FromDate)); } IMongoQuery mQuery = Query.And(queries); MongoCursor <METoDo> cToDos = ctx.ToDos.Collection.Find(mQuery); List <METoDo> meToDos = null; SortByBuilder sortBy = MongoSortingUtils.GetSortByBuilder(dataRequest.Sort, typeof(METoDo)); cToDos = cToDos.SetSortOrder(sortBy); cToDos = (MongoCursor <METoDo>)MongoSortingUtils.ApplySkipTake(cToDos, dataRequest); response.TotalCount = cToDos.Count(); meToDos = cToDos.ToList(); //query now if (meToDos != null && meToDos.Count > 0) { todoList = new List <ToDoData>(); foreach (METoDo t in meToDos) { todoList.Add(new ToDoData { AssignedToId = t.AssignedToId == null ? string.Empty : t.AssignedToId.ToString(), CategoryId = t.Category == null ? string.Empty : t.Category.ToString(), ClosedDate = t.ClosedDate, CreatedById = t.RecordCreatedBy.ToString(), CreatedOn = t.RecordCreatedOn, Description = t.Description, DueDate = t.DueDate, StartTime = t.StartTime, Duration = t.Duration, Id = t.Id.ToString(), PatientId = t.PatientId == null ? string.Empty : t.PatientId.ToString(), PriorityId = (int)t.Priority, ProgramIds = Helper.ConvertToStringList(t.ProgramIds), StatusId = (int)t.Status, Title = t.Title, UpdatedOn = t.LastUpdatedOn, DeleteFlag = t.DeleteFlag, ExternalRecordId = t.ExternalRecordId, SourceId = t.SourceId.ToString() }); } } } response.ToDos = todoList; return(response); } catch (Exception ex) { throw new Exception("DD:MongoToDoRepository:FindToDos()::" + ex.Message, ex.InnerException); } }
public GetToDosResponse GetToDos(GetToDosRequest request) { try { GetToDosResponse response = new GetToDosResponse(); List <ToDo> toDosResult = null; //[Route("/{Context}/{Version}/{ContractNumber}/Scheduling/ToDos", "POST")] IRestClient client = new JsonServiceClient(); string url = Common.Helper.BuildURL(string.Format("{0}/{1}/{2}/{3}/Scheduling/ToDos", DDSchedulingUrl, "NG", request.Version, request.ContractNumber), request.UserId); GetToDosDataResponse ddResponse = client.Post <GetToDosDataResponse>(url, new GetToDosDataRequest { Context = "NG", ContractNumber = request.ContractNumber, Version = request.Version, UserId = request.UserId, AssignedToId = request.AssignedToId, NotAssignedToId = request.NotAssignedToId, CreatedById = request.CreatedById, PatientId = request.PatientId, StatusIds = request.StatusIds, CategoryIds = request.CategoryIds, PriorityIds = request.PriorityIds, FromDate = request.FromDate, Skip = request.Skip, Take = request.Take, Sort = request.Sort } as object); if (ddResponse != null && ddResponse.ToDos != null) { response.TotalCount = ddResponse.TotalCount; toDosResult = new List <ToDo>(); List <ToDoData> dataList = ddResponse.ToDos; var distintPatients = dataList.GroupBy(p => p.PatientId).Select(grp => grp.FirstOrDefault()).ToList(); List <string> patientIds = distintPatients.Select(p => p.PatientId).ToList(); // Call Patient DD to get patient details. Dictionary <string, PatientData> patients = getPatients(request.Version, request.ContractNumber, request.UserId, client, patientIds); foreach (ToDoData n in dataList) { ToDo toDo = convertToToDo(n); if (patients != null && !string.IsNullOrEmpty(n.PatientId)) { PatientData pd; if (patients.TryGetValue(n.PatientId, out pd)) { toDo.PatientDetails = new PatientDetails { Id = pd.Id, FirstName = pd.FirstName, LastName = pd.LastName, MiddleName = pd.MiddleName, PreferredName = pd.PreferredName, Suffix = pd.Suffix }; } } toDosResult.Add(toDo); } } response.ToDos = toDosResult; return(response); } catch (WebServiceException ex) { throw new WebServiceException("AD:GetToDos()::" + ex.Message, ex.InnerException); } }