Beispiel #1
0
        public SurveyAnswerResponse UpdateResponseStatus(SurveyAnswerRequest surveyAnswerRequest)
        {
            SurveyAnswerResponse surveyAnswerResponse = new SurveyAnswerResponse();

            try
            {
                SurveyResponseProvider surveyResponseImplementation = new SurveyResponseProvider(_surveyResponseDao);

                var responseContext = surveyAnswerRequest.ResponseContext;
                List <SurveyResponseBO> surveyResponseBOList = surveyResponseImplementation.GetSurveyResponseById(responseContext, surveyAnswerRequest.Criteria);
                foreach (var surveyResponseBO in surveyResponseBOList)
                {
                    try
                    {
                        if (surveyAnswerRequest.IsChildResponse)
                        {
                            surveyResponseBO.ActiveChildResponseDetail = surveyResponseBO.ResponseDetail.FindFormResponseDetail(surveyAnswerRequest.ResponseId);
                        }
                        surveyResponseBO.IsNewRecord           = surveyAnswerRequest.IsNewRecord;
                        surveyResponseBO.UserOrgId             = surveyAnswerRequest.Criteria.UserOrganizationId;
                        surveyResponseBO.CurrentOrgId          = surveyAnswerRequest.Criteria.UserOrganizationId;
                        surveyResponseBO.UserId                = surveyAnswerRequest.Criteria.UserId;
                        surveyResponseBO.UserName              = surveyAnswerRequest.Criteria.UserName;
                        surveyResponseBO.LastSaveLogonName     = surveyAnswerRequest.Criteria.UserName;
                        surveyResponseBO.LastSaveTime          = DateTime.UtcNow;
                        surveyResponseBO.RecStatus             = surveyAnswerRequest.Criteria.StatusId;
                        surveyResponseBO.ReasonForStatusChange = surveyAnswerRequest.Criteria.StatusChangeReason;
                    }
                    finally
                    {
                        surveyResponseBO.ActiveChildResponseDetail = null;
                    }
                }

                List <SurveyResponseBO> resultList = surveyResponseImplementation.UpdateSurveyResponse(surveyResponseBOList, surveyAnswerRequest.Criteria.StatusId, surveyAnswerRequest.Criteria.StatusChangeReason);
                surveyAnswerResponse.SurveyResponseList = resultList.Select(bo => bo.ToSurveyAnswerDTO()).ToList();
                surveyAnswerResponse.NumberOfResponses  = surveyAnswerResponse.SurveyResponseList.Count();
            }
            catch (Exception ex)
            {
                throw new FaultException <CustomFaultException>(new CustomFaultException(ex));
            }
            return(surveyAnswerResponse);
        }
Beispiel #2
0
        public SurveyAnswerResponse SetSurveyAnswer(SurveyAnswerRequest surveyAnswerRequest)
        {
            SurveyAnswerResponse response = new SurveyAnswerResponse(surveyAnswerRequest.RequestId);

            var responseContext = surveyAnswerRequest.ResponseContext;

            // Transform SurveyResponse data transfer object to SurveyResponse business object
            SurveyResponseBO surveyResponseBO = surveyAnswerRequest.SurveyAnswerList[0].ToSurveyResponseBO();

            surveyResponseBO.IsNewRecord = surveyAnswerRequest.IsNewRecord;

            if (surveyAnswerRequest.Criteria.UserOrganizationId > 0)
            {
                surveyResponseBO.UserOrgId    = surveyAnswerRequest.Criteria.UserOrganizationId;
                surveyResponseBO.CurrentOrgId = surveyAnswerRequest.Criteria.UserOrganizationId;
            }

            if (surveyAnswerRequest.Criteria.UserId > 0)
            {
                surveyResponseBO.UserId = surveyAnswerRequest.Criteria.UserId;
            }
            if (!string.IsNullOrWhiteSpace(surveyAnswerRequest.Criteria.UserName))
            {
                surveyResponseBO.UserName = surveyAnswerRequest.Criteria.UserName;
            }


            // Validate SurveyResponse business rules

            if (!surveyAnswerRequest.Action.Equals(RequestAction.Delete, StringComparison.OrdinalIgnoreCase))
            {
                //if (!SurveyResponse.Validate())
                //{

                //    foreach (string error in SurveyResponse.ValidationErrors)
                //        response.Message += error + Environment.NewLine;

                //    return response;
                //}
            }

            if (surveyAnswerRequest.Action.Equals(RequestAction.Create, StringComparison.OrdinalIgnoreCase))
            {
                _surveyResponseProvider.InsertSurveyResponse(surveyResponseBO);
                response.SurveyResponseList.Add(surveyResponseBO.ToSurveyAnswerDTO());
            }
            else if (surveyAnswerRequest.Action.Equals(RequestAction.CreateMulti, StringComparison.OrdinalIgnoreCase))
            {
                if (surveyAnswerRequest.SurveyAnswerList[0].ParentResponseId != null)
                {
                    var parentResponseId = surveyAnswerRequest.SurveyAnswerList[0].ParentResponseId;
                    var viewId           = surveyAnswerRequest.SurveyAnswerList[0].ViewId;
                    var metadataAccessor = new MetadataAccessor();
                    var formId           = metadataAccessor.GetFormIdByViewId(viewId);
                    var formName         = metadataAccessor.GetFormName(formId);
                    responseContext = surveyAnswerRequest.SurveyAnswerList[0].CloneResponseContext();
                    List <SurveyResponseBO> surveyResponseBOList = _surveyResponseProvider.GetResponsesHierarchyIdsByRootId(responseContext); //formId, parentResponseId);

                    //if (!surveyAnswerRequest.SurveyAnswerList[0].RecoverLastRecordVersion)
                    //// if we are not keeping the version of xml found currently in the SurveyResponse table (meaning getting the original copy form the ResponseXml table)
                    //{
                    //    //check if any orphan records exists
                    //    foreach (var item in _surveyResponseBOList)
                    //    {
                    //        if (item.ResponseId != null)
                    //        {
                    //            SurveyResponseBO SurveyResponseBO = _surveyResponseProvider.GetResponse(item.ResponseId);
                    //            // before we delete the temp version we need to move it the SurveResponse table

                    //            if (!string.IsNullOrEmpty(SurveyResponseBO.ResponseId))
                    //            {
                    //                SurveyResponseBO.UserId = surveyAnswerRequest.Criteria.UserId;
                    //                ResponseBO responseBO = new ResponseBO();
                    //                responseBO.ResponseId = SurveyResponseBO.ResponseId;
                    //                // During the delete process below:
                    //                //  1) Delete the record from ResponseXml table.
                    //                //  2) Update Record status in the SurveyResponse table which fires database triggers.
                    //                _surveyResponseProvider.DeleteResponse(responseBO);
                    //                _surveyResponseProvider.UpdateRecordStatus(responseBO.ResponseId.ToString(), 2);

                    //                //This will handle the status update and the swapping of the Xml
                    //                // but for this scenario I will keep the status unchanged
                    //                // Implementation.DeleteSurveyResponseInEditMode(SurveyResponseBO);
                    //            }
                    //        }
                    //    }

                    //    _surveyResponseBOList = _surveyResponseProvider.GetResponsesHierarchyIdsByRootId(surveyAnswerRequest.SurveyAnswerList[0].ParentResponseId);
                    //    // Inserting a temp xml to the ResponseXml table
                    //    response.SurveyResponseList = _surveyResponseProvider.InsertSurveyResponse(_surveyResponseBOList, surveyAnswerRequest.Criteria.UserId).ToSurveyAnswerDTOList();
                    //}
                    //else
                    {
                        // load the version curently found the SurveyResponse table

                        response.SurveyResponseList = surveyResponseBOList.ToSurveyAnswerDTOList();
                    }
                }
            }
            else if (surveyAnswerRequest.Action.Equals(RequestAction.Update, StringComparison.OrdinalIgnoreCase))
            {
                _surveyResponseProvider.UpdateSurveyResponse(surveyResponseBO);
                response.SurveyResponseList.Add(surveyResponseBO.ToSurveyAnswerDTO());
            }

            else if (surveyAnswerRequest.Action.Equals(RequestAction.CreateChild, StringComparison.OrdinalIgnoreCase))
            {
                SurveyInfoBO surveyInfoBO = _surveyInfoService.GetParentInfoByChildFormId(surveyResponseBO.FormId);

                _surveyResponseProvider.InsertChildSurveyResponse(surveyResponseBO, surveyInfoBO, surveyAnswerRequest.SurveyAnswerList[0].ParentResponseId);
                response.SurveyResponseList.Add(surveyResponseBO.ToSurveyAnswerDTO());

                List <SurveyResponseBO> List = new List <SurveyResponseBO>();
                List.Add(surveyResponseBO);
                _surveyResponseProvider.InsertSurveyResponse(List, surveyAnswerRequest.Criteria.UserId, true);
            }
            else if (surveyAnswerRequest.Action.Equals(RequestAction.UpdateMulti, StringComparison.OrdinalIgnoreCase))
            {
                throw new NotImplementedException(RequestAction.UpdateMulti);
            }
            else if (surveyAnswerRequest.Action.Equals(RequestAction.Delete, StringComparison.OrdinalIgnoreCase))
            {
                try
                {
                    foreach (var item in surveyAnswerRequest.SurveyAnswerList)
                    {
                        try
                        {
                            _surveyResponseProvider.UpdateRecordStatus(item, RecordStatus.Deleted, RecordStatusChangeReason.DeleteResponse);
                        }
                        catch
                        {
                        }
                    }
                }
                catch (Exception ex)
                {
                    Console.WriteLine("DeleteResponse: " + ex.ToString());
                }
            }
            else if (surveyAnswerRequest.Action.Equals(RequestAction.DontSave, StringComparison.OrdinalIgnoreCase))
            {
                try
                {
                    foreach (var item in surveyAnswerRequest.SurveyAnswerList)
                    {
                        try
                        {
                            _surveyResponseProvider.UpdateRecordStatus(item, RecordStatus.RecoverLastRecordVersion, RecordStatusChangeReason.DontSave);
                        }
                        catch (Exception ex)
                        {
                            Console.WriteLine("DontSave: " + ex.ToString());
                        }
                    }
                }
                catch (Exception ex)
                {
                    Console.WriteLine("DeleteResponse: " + ex.ToString());
                }
            }
            else if (surveyAnswerRequest.Action.Equals(RequestAction.DeleteResponse, StringComparison.OrdinalIgnoreCase))
            {
                try
                {
                    foreach (var item in surveyAnswerRequest.SurveyAnswerList)
                    {
                        try
                        {
                            _surveyResponseProvider.UpdateRecordStatus(item, RecordStatus.Saved, RecordStatusChangeReason.DeleteResponse);
                        }
                        catch
                        {
                        }
                    }
                }
                catch (Exception ex)
                {
                    Console.WriteLine("DeleteResponse: " + ex.ToString());
                }
            }

            return(response);
        }