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); }
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); }