Exemplo n.º 1
0
        private ItemInfo GetItemInfo(AppFxWebService appFxService, ClientAppInfoHeader header, string itemName, string sourceInfo)
        {
            ItemInfo itemInfo = new ItemInfo();


            // Retrieve item info from 'Catalog Browser List' datalist so we can determine how we want to load it
            DataListLoadRequest listLoadReq = new DataListLoadRequest();

            listLoadReq.ClientAppInfo = header;
            listLoadReq.DataListID    = new Guid("91907a4f-14a3-4433-b780-a030c01ca452"); // Catalog Browser List

            // Create params with SOURCE set to the source from the msbuild item metadata
            listLoadReq.Parameters        = new DataFormItem();
            listLoadReq.Parameters.Values = new DataFormFieldValue[]
            {
                new DataFormFieldValue()
                {
                    ID = "SOURCE", Value = sourceInfo
                }
            };

            // Let any exceptions from this bubble upwards
            DataListLoadReply listLoadReply = null;

            listLoadReply = appFxService.DataListLoad(listLoadReq);

            // Loading a few constants for clarity's sake
            int itemSourceColNum       = 3;
            int itemIdColNum           = 5;
            int itemResourceNameColNum = 8;
            int itemTypeCodeColNum     = 14;

            // Look for the item we're supposed to load in the datalist results
            DataListResultRow rowToLoad = listLoadReply.Rows.Where(r => r.Values[itemResourceNameColNum].Equals(itemName, StringComparison.InvariantCultureIgnoreCase)).Select(r => r).FirstOrDefault();

            if (rowToLoad == null)
            {
                throw new Exception(string.Format("Did not find '{0}' in items loaded from '{1}'.", itemName, sourceInfo));
            }

            int tmpItemTypeCode = int.MinValue;

            if (!int.TryParse(rowToLoad.Values[itemTypeCodeColNum], out tmpItemTypeCode))
            {
                throw new Exception(string.Format("Failed to parse item type code from '{0}'", rowToLoad.Values[itemTypeCodeColNum]));
            }

            itemInfo.ItemTypeCode = tmpItemTypeCode;
            itemInfo.ItemId       = new Guid(rowToLoad.Values[itemIdColNum]);
            itemInfo.ItemName     = rowToLoad.Values[itemResourceNameColNum];
            itemInfo.ItemSource   = rowToLoad.Values[itemSourceColNum];

            return(itemInfo);
        }
Exemplo n.º 2
0
        private void RefreshAdditionalRelationships()
        {
            //this.RELATIONSHIPS.Value.Clear();
            DataListLoadRequest req = new DataListLoadRequest();

            req.DataListID = new Guid("9FB22DDF-1B9E-4FBF-875A-CB7E18CBB755");
            req.Parameters = new DataFormItem();
            // Guid guid1;
            //   Guid guid2;
            //if (this._constitHasHousehold)
            // {
            //    guid1 = new Guid(this.ContextRecordId);
            //     guid2 = this.RECIPROCALUMHSID.Value;
            // }
            //else
            //{
            //    guid1 = this.RELATEDINDIVIDUAL.Value;
            //    guid2 = new Guid(this.ContextRecordId);
            //}
            //req.Parameters.SetValue("HOUSEHOLDCONSTITUENTID", (object)guid1);
            //req.Parameters.SetValue("ADDITIONALCONSTITUENTID", (object)guid2);
            req.SecurityContext = this.GetRequestSecurityContext();
            DataListLoadReply dataListLoadReply = new AppFxWebService(this.GetRequestContext()).DataListLoad(req);

            if (dataListLoadReply == null || Enumerable.Count <DataListResultRow>((IEnumerable <DataListResultRow>)dataListLoadReply.Rows) <= 0)
            {
                return;
            }
            DataListResultRow[] dataListResultRowArray = dataListLoadReply.Rows;
            int index = 0;

            while (index < dataListResultRowArray.Length)
            {
                DataListResultRow dataListResultRow = dataListResultRowArray[index];
                UMHSRelationshipAddFormUIModel relationshipsuiModel = new UMHSRelationshipAddFormUIModel();
                Guid   guid3 = new Guid(dataListResultRow.Values[0]);
                int    num   = Conversions.ToInteger(dataListResultRow.Values[1]);
                string str1  = dataListResultRow.Values[2];
                string str2  = dataListResultRow.Values[3];
                string str3  = dataListResultRow.Values[4];
                string str4  = dataListResultRow.Values[5];
                Guid   relationshipTypeCodeID = dataListResultRow.Values[6] == null ? Guid.Empty : new Guid(dataListResultRow.Values[6]);
                Guid   reciprocalTypeCodeID   = dataListResultRow.Values[7] == null ? Guid.Empty : new Guid(dataListResultRow.Values[7]);
                //relationshipsuiModel.RECIPROCALCONSTITUENTID.Value = guid3;
                //relationshipsuiModel.RECIPROCALCONSTITUENTID.Value = guid2;
                relationshipsuiModel.RECIPROCALUMHSID.Value = guid3;
                //relationshipsuiModel.RECIPROCALUMHSID.Value = guid2;
                //relationshipsuiModel.UMHSTYPE.Value = num;
                if (string.IsNullOrEmpty(str4)) //**It shoudl be RECIPROCALPATIENTNAME
                {
                    relationshipsuiModel.PATIENTNAME.Value = string.Format((IFormatProvider)CultureInfo.CurrentCulture, "Individual is the", new object[2]
                    {
                        (object)str1,
                        (object)ConstituentHelper.MakeStringPossessive(str3)
                    });
                }
                else
                {
                    //shoudl be RECIPROCALPATIENTNAME instead of PATIENTNAME here
                    relationshipsuiModel.PATIENTNAME.Value = string.Format((IFormatProvider)CultureInfo.CurrentCulture, "Individual is the", (object)str1, (object)ConstituentHelper.MakeStringPossessive(str2), (object)str4, (object)ConstituentHelper.MakeStringPossessive(str3));
                }
                relationshipsuiModel.PATIENTNAME.Value = string.Format((IFormatProvider)CultureInfo.CurrentCulture, "Individual is the", new object[1]
                {
                    (object)str3
                });
                relationshipsuiModel.PATIENTNAME.Enabled = false;
                relationshipsuiModel.PATIENTNAME.Enabled = false; //should be RECIPROCALPATIENTNAME
                relationshipsuiModel.SetExistingRelationship(relationshipTypeCodeID, reciprocalTypeCodeID);
                // this.RELATIONSHIPS.Value.Add(relationshipsuiModel);
                checked { ++index; }
            }
        }
        public override AppDataListResult GetListResults()
        {
            List <DataListResultRow> resultList = new List <DataListResultRow>();
            int timeOut = this.RequestContext.ClientAppInfo.TimeOutSeconds;

            if (!StatusCode.HasValue)
            {
                StatusCode = -1;
            }

            System.Text.StringBuilder builder = new System.Text.StringBuilder();
            builder.AppendLine("select");
            builder.AppendLine("  BUSINESSPROCESSSTATUS.ID,");
            builder.AppendLine("  BUSINESSPROCESSCATALOG.NAME as BUSINESSPROCESSCATALOGNAME,");
            builder.AppendLine("  BUSINESSPROCESSSTATUS.STATUSCODE,");
            builder.AppendLine("  BUSINESSPROCESSSTATUS.STATUS,");
            builder.AppendLine("  BUSINESSPROCESSSTATUS.ERRORMESSAGE,");
            builder.AppendLine("  dbo.UFN_APPUSER_CUSTOMAUTHUSERID_OR_USERNAME(STARTEDBY.ID) AS USERNAME,");
            builder.AppendLine("  BUSINESSPROCESSSTATUS.STARTEDON,");
            builder.AppendLine("  BUSINESSPROCESSSTATUS.ENDEDON,");
            builder.AppendLine("  BUSINESSPROCESSSTATUS.NUMBERPROCESSED,");
            builder.AppendLine("  BUSINESSPROCESSSTATUS.NUMBEROFEXCEPTIONS,");
            builder.AppendLine("  BUSINESSPROCESSSTATUS.SERVERNAME,");
            builder.AppendLine("  datediff(s, BUSINESSPROCESSSTATUS.STARTEDON, coalesce(BUSINESSPROCESSSTATUS.ENDEDON, getdate())) DURATION,");
            builder.AppendLine("  case when BUSINESSPROCESSSTATUS.LETTERTEMPLATE is null then 0 else 1 end as HASLETTERTEMPLATE,");
            builder.AppendLine("  case when BUSINESSPROCESSSTATUS.LABELTEMPLATE is null then 0 else 1 end as HASLABELTEMPLATE,");
            builder.AppendLine("  BUSINESSPROCESSCATALOG.ID as BUSINESSPROCESSCATALOGID,");
            builder.AppendLine("  STATUS.PARAMETERSETID,");
            builder.AppendLine("  cast((case when exists(select * from dbo.BUSINESSPROCESSOUTPUT where BUSINESSPROCESSOUTPUT.BUSINESSPROCESSSTATUSID = BUSINESSPROCESSSTATUS.ID) then 1 else 0 end) as bit) as OUTPUTTABLEEXISTS");
            builder.AppendLine("from dbo.BUSINESSPROCESSSTATUS");
            builder.AppendLine("inner join dbo.USR_CONSTITUENTPHOTOANALYSISPROCESSSTATUS as STATUS on STATUS.ID = BUSINESSPROCESSSTATUS.ID");
            builder.AppendLine("inner join dbo.APPUSER as STARTEDBY on STARTEDBY.ID = BUSINESSPROCESSSTATUS.STARTEDBYUSERID");
            builder.AppendLine("inner join dbo.BUSINESSPROCESSCATALOG on BUSINESSPROCESSCATALOG.ID = BUSINESSPROCESSSTATUS.BUSINESSPROCESSCATALOGID");
            builder.AppendLine("left join dbo.[BUSINESSPROCESSSTATUS_EXT] on [BUSINESSPROCESSSTATUS_EXT].[ID] = [BUSINESSPROCESSSTATUS].[ID]");
            builder.AppendLine("where STATUS.PARAMETERSETID = @PARAMETERSETID");
            builder.AppendLine("and dbo.UFN_SECURITY_APPUSER_GRANTED_BUSINESSPROCESSINSTANCE_IN_SYSTEMROLE(@APPUSERID, STATUS.PARAMETERSETID) = 1");
            if (StatusCode > -1)
            {
                builder.AppendLine("and BUSINESSPROCESSSTATUS.STATUSCODE = @STATUSCODE");
            }
            builder.AppendLine("order by BUSINESSPROCESSSTATUS.STARTEDON desc");

            using (SqlConnection conn = this.RequestContext.OpenAppDBConnection())
            {
                int returnValue = 0;
                Blackbaud.AppFx.SpWrap.USP_BUSINESSPROCESSSTATUS_VALIDATESTATUS.WrapperRoutines.ExecuteNonQuery(conn, ref returnValue, timeOut);

                using (SqlCommand cmd = conn.CreateCommand())
                {
                    cmd.CommandText    = builder.ToString();
                    cmd.CommandTimeout = timeOut;
                    cmd.Parameters.AddWithValue("@PARAMETERSETID", this.ProcessContext.ContextRecordID);
                    if (StatusCode > -1)
                    {
                        cmd.Parameters.AddWithValue("@STATUSCODE", StatusCode);
                    }
                    cmd.Parameters.AddWithValue("@APPUSERID", this.RequestContext.AppUserInfo.AppUserDBId);

                    using (SqlDataReader reader = cmd.ExecuteReader(CommandBehavior.CloseConnection))
                    {
                        while (reader.Read())
                        {
                            DataListResultRow result        = new DataListResultRow();
                            string            statusMessage = string.Empty;
                            string            duration      = string.Empty;

                            int.TryParse(reader.GetValue((int)FieldList.STATUSCODE).ToString(), out int statusCode);

                            switch (statusCode)
                            {
                            case 0:
                            case 3:
                            case 4:     // Completed or Results Cleared
                                statusMessage = reader.GetString((int)FieldList.STATUS);
                                break;

                            case 1:     // Running
                                using (SqlConnection statusConn = this.RequestContext.OpenAppDBConnection())
                                {
                                    using (SqlCommand statusCmd = statusConn.CreateCommand())
                                    {
                                        statusCmd.CommandText    = String.Format("select STATUSMESSAGE from ##BUSINESSPROCESSSTATUS_{0}", reader.GetGuid((int)FieldList.ID).ToString().Replace("-", "_"));
                                        statusCmd.CommandTimeout = timeOut;
                                        statusMessage            = statusCmd.ExecuteScalar().ToString();
                                    }
                                }
                                break;

                            case 2:     // Did not finish
                                statusMessage = reader.GetString((int)FieldList.ERRORMESSAGE);
                                break;
                            }

                            TimeSpan durationSpan = new TimeSpan(0, 0, (int)reader.GetSqlInt32((int)FieldList.DURATION));

                            System.Text.StringBuilder durationBuilder = new System.Text.StringBuilder();
                            if (durationSpan.Days > 1)
                            {
                                durationBuilder.AppendFormat("{0} {1} ", durationSpan.Days, "days");
                            }
                            else if (durationSpan.Days > 0)
                            {
                                durationBuilder.AppendFormat("{0} {1} ", durationSpan.Days, "day");
                            }


                            if (durationSpan.Hours > 1)
                            {
                                durationBuilder.AppendFormat("{0} {1} ", durationSpan.Hours, "hours");
                            }
                            else if (durationSpan.Hours > 0)
                            {
                                durationBuilder.AppendFormat("{0} {1} ", durationSpan.Hours, "hour");
                            }

                            if (durationSpan.Minutes > 1)
                            {
                                durationBuilder.AppendFormat("{0} {1} ", durationSpan.Minutes, "minutes");
                            }
                            else if (durationSpan.Minutes > 0)
                            {
                                durationBuilder.AppendFormat("{0} {1} ", durationSpan.Minutes, "minute");
                            }

                            if (durationSpan.Seconds > 1)
                            {
                                durationBuilder.AppendFormat("{0} {1} ", durationSpan.Seconds, "seconds");
                            }
                            else if (durationSpan.Seconds > 0)
                            {
                                durationBuilder.AppendFormat("{0} {1} ", durationSpan.Seconds, "second");
                            }

                            duration = durationBuilder.ToString().Trim();

                            if (string.IsNullOrEmpty(duration))
                            {
                                duration = "0 seconds";
                            }

                            int numberProcessed;
                            int numberOfExceptions;

                            numberProcessed    = reader.GetInt32((int)FieldList.NUMBERPROCESSED);
                            numberOfExceptions = reader.GetInt32((int)FieldList.NUMBEROFEXCEPTIONS);

                            string imageKey;

                            if (numberOfExceptions == 0)
                            {
                                if (statusCode == 4) //enqueued uses the businessprocessspec image key
                                {
                                    imageKey = "RES:businessprocessspec";
                                }
                                else
                                {
                                    imageKey = String.Format("RES:{0}", (ProcessStatusImage)statusCode).ToString();
                                }
                            }
                            else
                            {
                                imageKey = String.Format("RES:{0}", ProcessStatusImage.warning.ToString());
                            }

                            List <string> valueList = new List <string>
                            {
                                reader.GetGuid((int)FieldList.ID).ToString(),
                                reader.GetString((int)FieldList.BUSINESSPROCESSCATALOGNAME),
                                reader.GetString((int)FieldList.STATUS),
                                statusMessage,
                                reader.GetString((int)FieldList.USERNAME),
                                FormatFieldForList(reader.GetDateTime((int)FieldList.STARTEDON))
                            };
                            if (statusCode != 1 && statusCode != 4)
                            {
                                valueList.Add(FormatFieldForList(reader.GetDateTime((int)FieldList.ENDEDON)));
                            }
                            else
                            {
                                valueList.Add(String.Empty);
                            }
                            valueList.Add(duration);
                            valueList.Add(numberProcessed.ToString());
                            valueList.Add(numberOfExceptions.ToString());
                            valueList.Add((numberProcessed + numberOfExceptions).ToString());
                            valueList.Add(reader.GetString((int)FieldList.SERVERNAME));
                            valueList.Add(imageKey);
                            valueList.Add((statusCode = 0).ToString());
                            valueList.Add(((statusCode == 0) && (numberProcessed > 0)).ToString());
                            valueList.Add(((statusCode == 0) && (numberProcessed > 0) && (reader.GetInt32((int)FieldList.HASLETTERTEMPLATE) == 1)).ToString());
                            valueList.Add(((statusCode == 0) && (numberProcessed > 0) && (reader.GetInt32((int)FieldList.HASLABELTEMPLATE) == 1)).ToString());
                            valueList.Add("False");
                            valueList.Add("False");
                            valueList.Add(reader.GetGuid((int)FieldList.BUSINESSPROCESSCATALOGID).ToString());
                            valueList.Add(reader.GetGuid((int)FieldList.PARAMETERSETID).ToString());
                            valueList.Add(reader.GetBoolean((int)FieldList.OUTPUTTABLEEXISTS).ToString());

                            result.Values = valueList.ToArray();

                            resultList.Add(result);
                        }
                    }
                }
            }
            return(new AppDataListResult(resultList));
        }