/// <summary>
 /// Gets the string row values.
 /// </summary>
 /// <param name="claimData">The claim data.</param>
 /// <returns></returns>
 private static IEnumerable <string> GetStringRowValues(ModelComparisonReportDetails claimData)
 {
     return(new[]
     {
         claimData.ClaimData.NodeText, claimData.Count
     });
 }
        /// <summary>
        /// Generates the model compassion report.
        /// </summary>
        /// <param name="modelComparisonForPost">The model comparison for post.</param>
        /// <returns></returns>
        public ModelComparisonReport Generate(ModelComparisonReport modelComparisonForPost)
        {
            ModelComparisonReport modelComparisonReportData = new ModelComparisonReport();

            // Initialize the Stored Procedure
            _databaseCommandObj = _databaseObj.GetStoredProcCommand("GetModelComparisonReport");
            // Pass parameters to Stored Procedure(i.e., @ParamName), add values for
            _databaseObj.AddInParameter(_databaseCommandObj, "@SelectedModels ", DbType.String, modelComparisonForPost.SelectedModelList);
            _databaseObj.AddInParameter(_databaseCommandObj, "@IsDetailedView ", DbType.Int32, modelComparisonForPost.IsCheckedDetailLevel);
            _databaseObj.AddInParameter(_databaseCommandObj, "@DetailedViewAt ", DbType.Int32, modelComparisonForPost.DetailSelectValue);
            _databaseObj.AddInParameter(_databaseCommandObj, "@FacilityId ", DbType.Int32, modelComparisonForPost.FacilityId);
            _databaseObj.AddInParameter(_databaseCommandObj, "@DateType", DbType.Int32, modelComparisonForPost.DateType);
            _databaseObj.AddInParameter(_databaseCommandObj, "@DateFrom", DbType.DateTime, modelComparisonForPost.StartDate);
            _databaseObj.AddInParameter(_databaseCommandObj, "@DateTo", DbType.DateTime, modelComparisonForPost.EndDate);
            _databaseObj.AddInParameter(_databaseCommandObj, "@SelectCriteria", DbType.String, modelComparisonForPost.ClaimSearchCriteria);
            _databaseObj.AddInParameter(_databaseCommandObj, "@RequestedUserID", DbType.String, modelComparisonForPost.RequestedUserId);
            _databaseObj.AddInParameter(_databaseCommandObj, "@RequestedUserName", DbType.String, modelComparisonForPost.RequestedUserName);

            // Retrieve the results of the Stored Procedure in Data table
            _databaseCommandObj.CommandTimeout = 1000;
            DataSet modelComparisonDataSet = _databaseObj.ExecuteDataSet(_databaseCommandObj);

            if (modelComparisonDataSet.IsTableDataPopulated())
            {
                List <ModelComparisonReportDetails> modelComparisonReportList = new List <ModelComparisonReportDetails>();

                DataRowCollection modelComparisonRowCollection = modelComparisonDataSet.Tables[0].Rows;
                for (int indexCount = 0; indexCount < modelComparisonRowCollection.Count; indexCount++)
                {
                    ModelComparisonReportDetails modelComparisonReportDetails = new ModelComparisonReportDetails();
                    DataRow           modelComparisonRow = modelComparisonRowCollection[indexCount];
                    EvaluateableClaim claimData          = new EvaluateableClaim
                    {
                        NodeText              = DBNull.Value == modelComparisonRow["ModelName"] ? string.Empty : modelComparisonRow["ModelName"].ToString(),
                        ModelId               = DBNull.Value == modelComparisonRow["ModelId"] ? (int?)null : Convert.ToInt32(modelComparisonRow["ModelId"]),
                        ClaimTotal            = DBNull.Value == modelComparisonRow["ClaimTotalCharges"] ? (double?)null : Convert.ToDouble(modelComparisonRow["ClaimTotalCharges"]),
                        AdjudicatedValue      = DBNull.Value == modelComparisonRow["AdjudicatedValue"] ? (double?)null : Convert.ToDouble(modelComparisonRow["AdjudicatedValue"]),
                        CalculatedAdjustment  = DBNull.Value == modelComparisonRow["CalculatedAdjudtment"] ? (double?)null : Convert.ToDouble(modelComparisonRow["CalculatedAdjudtment"]),
                        ActualPayment         = DBNull.Value == modelComparisonRow["ActualPayment"] ? (double?)null : Convert.ToDouble(modelComparisonRow["ActualPayment"]),
                        ActualAdjustment      = DBNull.Value == modelComparisonRow["ActualAdjustment"] ? (double?)null : Convert.ToDouble(modelComparisonRow["ActualAdjustment"]),
                        PatientResponsibility = DBNull.Value == modelComparisonRow["PatientResponsibility"] ? (double?)null : Convert.ToDouble(modelComparisonRow["PatientResponsibility"]),
                        RemitAllowedAmt       = DBNull.Value == modelComparisonRow["RemitAllowed"] ? (double?)null : Convert.ToDouble(modelComparisonRow["RemitAllowed"]),
                        RemitNonCovered       = DBNull.Value == modelComparisonRow["RemitNonCovered"] ? (double?)null : Convert.ToDouble(modelComparisonRow["RemitNonCovered"]),
                        RemitContrAdj         = DBNull.Value == modelComparisonRow["RemitNonCovered"] ? (double?)null : Convert.ToDouble(modelComparisonRow["RemitNonCovered"]),
                        ContractualVariance   = DBNull.Value == modelComparisonRow["ContractualVariance"] ? (double?)null : Convert.ToDouble(modelComparisonRow["ContractualVariance"]),
                        PaymentVariance       = DBNull.Value == modelComparisonRow["PaymentVariance"] ? (double?)null : Convert.ToDouble(modelComparisonRow["PaymentVariance"]),
                        DetailedSelection     = DBNull.Value == modelComparisonRow["DetailedSelection"] ? string.Empty : modelComparisonRow["DetailedSelection"].ToString()
                    };
                    modelComparisonReportDetails.ClaimData = claimData;
                    modelComparisonReportDetails.Count     = DBNull.Value == modelComparisonRow["ClaimCount"]
                        ? string.Empty
                        : modelComparisonRow["ClaimCount"].ToString();
                    modelComparisonReportList.Add(modelComparisonReportDetails);
                }
                modelComparisonReportData.ModelComparisonData = modelComparisonReportList;
            }

            return(modelComparisonReportData);
        }
 /// <summary>
 /// Gets the amount row values.
 /// </summary>
 /// <param name="claimData">The claim data.</param>
 /// <returns></returns>
 private static IList <double?> GetAmountRowValues(ModelComparisonReportDetails claimData)
 {
     return(new[]
     {
         claimData.ClaimData.ClaimTotal, claimData.ClaimData.AdjudicatedValue, claimData.ClaimData.ActualPayment,
         claimData.ClaimData.PatientResponsibility, claimData.ClaimData.RemitAllowedAmt, claimData.ClaimData.RemitNonCovered, claimData.ClaimData.CalculatedAdjustment, claimData.ClaimData.ActualAdjustment, claimData.ClaimData.ContractualVariance, claimData.ClaimData.PaymentVariance
     });
 }