Пример #1
0
        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);
            }
        }
Пример #2
0
        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);
        }