public PostRepeatActionResponse RepeatAction(PostRepeatActionRequest request) { try { RelatedChanges.Clear(); ProcessedElements.Clear(); var response = new PostRepeatActionResponse(); response.PlanElems = new PlanElements(); var p = EndPointUtils.RequestPatientProgramDetail(request); // get module reference Module mod = PEUtils.FindElementById(p.Modules, request.Action.ModuleId); IPlanElementStrategy strategy = new StatePlanElementStrategy(new SetModulePropertiesForRepeat(mod)); // clone and insert new action var cAction = PEUtils.CloneRepeatAction(request.Action, mod.AssignToId); cAction.CompletedBy = "CM"; AddUniquePlanElementToProcessedList(cAction); // insert action update var action = NGUtils.UpdateProgramAction(request.Action, p); AddUniquePlanElementToProcessedList(request.Action); // insert action into module and update references ReplaceActionReferenceInModule(request.Action.Id, cAction, mod); strategy.Evoke(); AddUniquePlanElementToProcessedList(mod); // save var pdetail = EndPointUtils.SaveAction(request, cAction.Id, p, true); // create element changed lists PEUtils.HydratePlanElementLists(ProcessedElements, response.PlanElems); response.PlanElems.Attributes = PEUtils.GetAttributes(pdetail.Attributes); response.RelatedChanges = RelatedChanges; response.PatientId = request.PatientId; response.Version = request.Version; return(response); } catch (Exception ex) { throw new Exception("AD:InterviewManager:ProcessActionResults()::" + ex.Message, ex.InnerException); } }
public PostRepeatActionResponse Post(PostRepeatActionRequest request) { var response = new PostRepeatActionResponse(); var intm = new PlanManager(); ValidateTokenResponse result = null; try { request.Token = base.Request.Headers["Token"] as string; result = Security.IsUserValidated(request.Version, request.Token, request.ContractNumber); if (result.UserId.Trim() != string.Empty) { request.UserId = result.UserId; response = intm.RepeatAction(request); } else { throw new UnauthorizedAccessException(); } } catch (Exception ex) { CommonFormatter.FormatExceptionResponse(response, base.Response, ex); if ((ex is WebServiceException) == false) { intm.LogException(ex); } } finally { List <string> patientIds = null; if (!string.IsNullOrEmpty(response.PatientId)) { patientIds = new List <string> { response.PatientId }; } if (result != null) { AuditHelper.LogAuditData(request, result.SQLUserId, patientIds, System.Web.HttpContext.Current.Request, request.GetType().Name); } } return(response); }