From Mark code, 1 Week ago, written in Text.
Embed
  1. <Window x:Class="AINeCascadeClient.AINeCascadeClientUI"
  2.         xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
  3.         xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
  4.         xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
  5.         xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
  6.         xmlns:local="clr-namespace:AINeCascadeClient"
  7.         mc:Ignorable="d"
  8.         Title="eCascade Client V1.2.00 Beta" Height="721" Width="1298" Background="LightSteelBlue" FontFamily="Microsoft Sans Serif"
  9.         WindowState="Normal" WindowStartupLocation="CenterScreen" FontSize="11">
  10.     <Grid>
  11.         <Grid.RowDefinitions>
  12.             <RowDefinition Height="20" />
  13.             <RowDefinition Height="Auto" />
  14.             <RowDefinition Height="Auto" />
  15.             <RowDefinition Height="Auto" />
  16.             <RowDefinition Height="Auto" />
  17.             <RowDefinition Height="*" />
  18.             <RowDefinition Height="10" />
  19.         </Grid.RowDefinitions>
  20.         <!--<Grid.ColumnDefinitions>
  21.                 <ColumnDefinition Width="*" />
  22.                 <ColumnDefinition Width="Auto"/>
  23.                 <ColumnDefinition Width="*"/>
  24.             </Grid.ColumnDefinitions>-->
  25.         <GroupBox  Header="eCascade Client Services" BorderThickness="0.5" Grid.Row="1" MinHeight="55" Margin="5,0,5,0">
  26.             <Grid>
  27.                 <Grid.ColumnDefinitions>
  28.                     <ColumnDefinition Width=".12*"/>
  29.                     <ColumnDefinition Width=".94*"/>
  30.                     <ColumnDefinition Width=".14*"/>
  31.                 </Grid.ColumnDefinitions>
  32.                 <!--<WrapPanel x:Name="groupBox1" Orientation="Horizontal">-->
  33.                 <Label x:Name="label1" Grid.Column="0" Margin="0,7,10,5" MinWidth="125" MinHeight="22">eCascaded Url:</Label>
  34.                 <!--<TextBox x:Name="txtUrl" Margin="0,5,10,5" MinWidth="990" Background="{DynamicResource {x:Static SystemColors.ControlBrushKey}}"></TextBox>-->
  35.                 <TextBox x:Name="txtUrl" Grid.Column="1" Margin="0,5,10,5" MinWidth="990" HorizontalAlignment="Stretch"    Background="{DynamicResource {x:Static SystemColors.ControlBrushKey}}" FontWeight="Bold"></TextBox>
  36.                 <Button x:Name="btnOpenSetting" Grid.Column="2" Padding="10 0 10 0" Margin="3 3 3 3" MinHeight="20" Click="btnOpenSetting_Click">
  37.                     <!--Click="btnOpenSetting_Click"-->
  38.                     <Button.Background>
  39.                         <LinearGradientBrush EndPoint="0,1" StartPoint="0,0">
  40.                             <GradientStop Color="#FFF3F3F3" Offset="0"/>
  41.                             <GradientStop Color="#FFEBEBEB" Offset="0.5"/>
  42.                             <GradientStop Color="#FFDDDDDD" Offset="0.5"/>
  43.                             <GradientStop Color="#FFCDCDCD" Offset="1"/>
  44.                         </LinearGradientBrush>
  45.                     </Button.Background> Settings
  46.                 </Button>
  47.                 <!--</WrapPanel>-->
  48.             </Grid>
  49.         </GroupBox>
  50.  
  51.         <GroupBox  Header="CoP" BorderThickness="0.5" Grid.Row="2" MinHeight="55" Margin="5,0,5,0">
  52.             <Grid>
  53.                 <Grid.ColumnDefinitions>
  54.                     <ColumnDefinition Width=".12*"/>
  55.                     <ColumnDefinition Width=".94*"/>
  56.                     <ColumnDefinition Width=".14*"/>
  57.                 </Grid.ColumnDefinitions>
  58.                 <!--<WrapPanel x:Name="groupBox1" Orientation="Horizontal">-->
  59.                 <Label x:Name="lblCoPName" Grid.Column="0" Margin="0,7,10,5" MinWidth="125" MinHeight="22">CoP Name:</Label>
  60.                 <ComboBox x:Name="cmbCoPs" Margin="0,7,10,5" MinWidth="985" MinHeight="21" Grid.Column="1"
  61.                                       Background="{DynamicResource {x:Static SystemColors.ControlBrushKey}}" IsSynchronizedWithCurrentItem="True" SelectionChanged="cmbCoPs_SelectedIndexChanged">
  62.                     <!--SelectionChanged="cmbCoPs_SelectedIndexChanged"-->
  63.                 </ComboBox>
  64.                 <Button x:Name="btnGetCoPs" Grid.Column="2" Padding="10 0 10 0" Margin="3 3 3 3" MinHeight="20" Click="btnGetCoPs_Click">
  65.                     <!--Click="btnGetCoPs_Click"-->
  66.                     <Button.Background>
  67.                         <LinearGradientBrush EndPoint="0,1" StartPoint="0,0">
  68.                             <GradientStop Color="#FFF3F3F3" Offset="0"/>
  69.                             <GradientStop Color="#FFEBEBEB" Offset="0.5"/>
  70.                             <GradientStop Color="#FFDDDDDD" Offset="0.5"/>
  71.                             <GradientStop Color="#FFCDCDCD" Offset="1"/>
  72.                         </LinearGradientBrush>
  73.                     </Button.Background> Get CoP(s)
  74.                 </Button>
  75.             </Grid>
  76.         </GroupBox>
  77.         <Grid Grid.Row="3">
  78.             <Grid.RowDefinitions>
  79.                 <RowDefinition Height="*"/>
  80.             </Grid.RowDefinitions>
  81.             <Grid.ColumnDefinitions>
  82.                 <ColumnDefinition Width=".50*" />
  83.                 <ColumnDefinition Width=".01*"/>
  84.                 <ColumnDefinition Width="*"/>
  85.             </Grid.ColumnDefinitions>
  86.  
  87.             <ScrollViewer HorizontalScrollBarVisibility="Auto" VerticalScrollBarVisibility="Auto" >
  88.                 <Grid Grid.Row="0" Grid.Column="0">
  89.                     <Grid.RowDefinitions>
  90.                         <RowDefinition Height="120"></RowDefinition>
  91.                         <RowDefinition Height="Auto"></RowDefinition>
  92.                         <RowDefinition Height="100"></RowDefinition>
  93.                         <RowDefinition Height="130"></RowDefinition>
  94.                     </Grid.RowDefinitions>
  95.  
  96.                     <GroupBox x:Name="grbCopDetails" Grid.Row="0" Margin="5,0,5,0" Header="CoP Details" BorderThickness="0.5" Height="117" >
  97.                         <Grid x:Name="CoPDetails" >
  98.                             <Grid.ColumnDefinitions>
  99.                                 <ColumnDefinition Width=".45*" />
  100.                                 <ColumnDefinition Width="*" />
  101.                             </Grid.ColumnDefinitions>
  102.                             <Grid.RowDefinitions>
  103.                                 <RowDefinition Height="7" />
  104.                                 <RowDefinition Height="*" />
  105.                                 <RowDefinition Height="*" />
  106.                                 <RowDefinition Height="*" />
  107.                             </Grid.RowDefinitions>
  108.                             <Label x:Name="lblProject" Width="57" MinHeight="13" Grid.Row="1" Grid.Column="0" HorizontalAlignment="Left">Project:</Label>
  109.                             <ComboBox x:Name="cmbProjects"  Height="27" Grid.Column="1" Grid.Row="1" Margin="0,0,5,0" Background="{DynamicResource {x:Static SystemColors.ControlBrushKey}}" SelectionChanged="cmbProjects_SelectionChanged" ></ComboBox>
  110.                             <!--SelectionChanged="cmbProjects_SelectionChanged"-->
  111.                             <Label x:Name="lblSubProject" Grid.Row="2" Grid.Column="0" Margin="0,0,10,0" >Sub Project:</Label>
  112.                             <ComboBox x:Name="cmbSubProjects" Grid.Column="1" Grid.Row="2" Margin="0,0,5,0" Height="27" Background="{DynamicResource {x:Static SystemColors.ControlBrushKey}}" SelectionChanged="cmbSubProjects_SelectionChanged"></ComboBox>
  113.                             <!--SelectionChanged="cmbSubProjects_SelectionChanged">-->
  114.                             <Label x:Name="lblMilestone" Grid.Row="3" Grid.Column="0" Margin="0,0,10,0" >Milestone:</Label>
  115.                             <ComboBox x:Name="cmbMilestones" Grid.Column="1" Grid.Row="3" Margin="0,0,5,0" Height="27" Background="{DynamicResource {x:Static SystemColors.ControlBrushKey}}" SelectionChanged="cmbMilestones_SelectionChanged" ></ComboBox>
  116.                             <!--SelectionChanged="cmbMilestones_SelectionChanged"-->
  117.                         </Grid>
  118.                     </GroupBox>
  119.                     <GroupBox x:Name="grbExtendedElements" Grid.Row="1" Header="Extended Elements" BorderThickness="0.5" Margin="5,0,5,0" >
  120.                         <Grid x:Name="gExtEleInner">
  121.  
  122.                         </Grid>
  123.                     </GroupBox>
  124.                     <GroupBox x:Name="grbAssesmentDetails" Header="Assessment Details" BorderThickness="0.5" Grid.Row="2" Margin="5,-15,5,0" Height="75">
  125.                         <Grid x:Name="grdAssessmentDetails">
  126.                             <Grid.ColumnDefinitions>
  127.                                 <ColumnDefinition Width="47*" />
  128.                                 <ColumnDefinition Width="110*" />
  129.                                 <ColumnDefinition Width="57*" />
  130.                                 <ColumnDefinition Width="30*" />
  131.                                 <ColumnDefinition Width="130*" />
  132.                             </Grid.ColumnDefinitions>
  133.                             <Grid.RowDefinitions>
  134.                                 <RowDefinition Height="7" />
  135.                                 <RowDefinition Height="*" />
  136.                             </Grid.RowDefinitions>
  137.                             <TextBlock x:Name="lblACId" MinWidth="24"  Margin="5,10,7,0" Grid.Row="1"
  138.                                    Grid.Column="0" Text="AC ID:" TextWrapping="Wrap"></TextBlock>
  139.                             <ComboBox x:Name="cmbACID" Grid.Column="1" Grid.Row="1" Height="27"
  140.                                   Margin="0,3,5,17" Background="{DynamicResource {x:Static SystemColors.ControlBrushKey}}" SelectionChanged="cmbACID_SelectedIndexChanged"></ComboBox>
  141.                             <Button x:Name="btnClearFilters" Grid.Column="2" Grid.Row="1" Padding="7 0 6 0" Width="Auto"  Margin="0,-6,5,3" MaxWidth="60"
  142.                                  Content="Clear" Height="27" Click="btnClearFilters_Click"></Button>
  143.                             <!--Click="btnClearFilters_Click"-->
  144.                             <TextBlock x:Name="lblACIDDescription" MinWidth="24" MinHeight="24"
  145.                                    Margin="5,10,10,0" TextWrapping="Wrap" Grid.Row="1" Grid.Column="3" Text="AC ID Description:"></TextBlock>
  146.                             <TextBox x:Name="txtACDesp" Grid.Column="4" Grid.Row="1" Margin="0,-6,0,17" Height="27"
  147.                                   Background="{DynamicResource {x:Static SystemColors.ControlBrushKey}}"></TextBox>
  148.                         </Grid>
  149.                     </GroupBox>
  150.                     <GroupBox x:Name="grbKPacDetails" Header="KPac Details" BorderThickness="0.5" Grid.Row="3" Grid.Column="0" Margin="5,-15,5,0" Height="107">
  151.                         <Grid x:Name="grdKPacDetails">
  152.                             <Grid.ColumnDefinitions>
  153.                                 <ColumnDefinition Width="70*" />
  154.                                 <ColumnDefinition Width="130*" />
  155.                                 <ColumnDefinition Width="70*" />
  156.                                 <ColumnDefinition Width="130*" />
  157.                             </Grid.ColumnDefinitions>
  158.                             <Grid.RowDefinitions>
  159.                                 <RowDefinition Height="7" />
  160.                                 <RowDefinition Height="45.97*" />
  161.                                 <RowDefinition Height="45.97*" />
  162.                             </Grid.RowDefinitions>
  163.                             <TextBlock x:Name="lblKpacId" MinWidth="24" MinHeight="24" Margin="5,5,10,20" Grid.Row="1" Grid.Column="0" Text="KPac Id:" TextWrapping="Wrap"></TextBlock>
  164.                             <ComboBox x:Name="cmbKpacIds" Grid.Column="1" Grid.Row="1" Margin="0,-6,5,20" Height="27"
  165.                                    Background="{DynamicResource {x:Static SystemColors.ControlBrushKey}}" SelectionChanged="cmbKpacIds_SelectedIndexChanged"  ></ComboBox>
  166.                             <TextBlock x:Name="lblKPacTitle" MinWidth="24" MinHeight="24" Margin="5,5,20,20" Grid.Row="1" Grid.Column="2" Text="KPac Title:" TextWrapping="Wrap"></TextBlock>
  167.                             <TextBox x:Name="txtKPacTitle" Grid.Column="3" Grid.Row="1" Margin="0,-6,0,20" Height="27"
  168.                                    Background="{DynamicResource {x:Static SystemColors.ControlBrushKey}}"  ></TextBox>
  169.                             <TextBlock x:Name="lblSubOID" MinWidth="24" MinHeight="24" Margin="5,5,10,0" Grid.Row="2" Grid.Column="0"
  170.                                    Text="Sub Occurrence ID:" TextWrapping="Wrap"></TextBlock>
  171.                             <ComboBox x:Name="cmbSubOccurId" Grid.Column="1" Grid.Row="2" Margin="0,-6,0,18" Height="27"
  172.                                    Background="{DynamicResource {x:Static SystemColors.ControlBrushKey}}" SelectionChanged="cmbSubOccurId_SelectedIndexChanged"  ></ComboBox>
  173.                             <TextBlock x:Name="lblKPacT1itle" MinWidth="24" MinHeight="24" Margin="5,5,7,0" Grid.Row="2"
  174.                                    Grid.Column="2" Text="Occurrence Name:" TextWrapping="Wrap"></TextBlock>
  175.                             <TextBox x:Name="txtOccurName" Grid.Column="3" Grid.Row="2" Margin="0,-6,0,17" Height="27"
  176.                                    Background="{DynamicResource {x:Static SystemColors.ControlBrushKey}}"  ></TextBox>
  177.  
  178.                         </Grid>
  179.                     </GroupBox>
  180.                 </Grid>
  181.             </ScrollViewer>
  182.             <GridSplitter Grid.Column="1" Grid.RowSpan="4" Width="5" HorizontalAlignment="Stretch" Background="Black"/>
  183.             <TabControl x:Name="tabAssesmentEditOptions" Background="LightSteelBlue" Grid.Row="0" Grid.Column="2">
  184.                 <TabItem>
  185.                     <TabItem.Header>
  186.                         <TextBlock><Run Text="Assesment Attachment"/></TextBlock>
  187.                         <!--<StackPanel Orientation="Horizontal">
  188.                             <TextBlock><Run Text="Assesment Attachment"/></TextBlock>
  189.                         </StackPanel>-->
  190.                     </TabItem.Header>
  191.                     <GroupBox BorderThickness="0.5" Grid.Row="3" Grid.Column="0" Margin="5,0,5,0" Height="Auto" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" HorizontalContentAlignment="Stretch" VerticalContentAlignment="Stretch">
  192.                       <Grid Height="Auto" Width="Auto">
  193.                             <!--<Grid.ColumnDefinitions>
  194.                                 <ColumnDefinition Width="53*"/>
  195.                                 <ColumnDefinition Width="120*"/>
  196.                                 <ColumnDefinition Width="649*"/>
  197.                             </Grid.ColumnDefinitions>-->
  198.                             <Grid.RowDefinitions>
  199.                                     <RowDefinition Height="10"/>
  200.                                     <RowDefinition Height="30"/>
  201.                                     <RowDefinition Height="*"/>
  202.                                     <RowDefinition Height="30"/>
  203.                                 </Grid.RowDefinitions>
  204.                             <Grid Grid.Row="1" Grid.ColumnSpan="3">
  205.                                 <Grid.ColumnDefinitions>
  206.                                     <ColumnDefinition Width="Auto"/>
  207.                                     <ColumnDefinition Width="Auto"/>
  208.                                 </Grid.ColumnDefinitions>
  209.                                 <Button x:Name="btnListAttachment" Content="List Attachment(s)" Padding="10 0 10 0" Margin="0,0,0,10" MinHeight="20" Click="btnListAttachment_Click"  Grid.Column="0"/>
  210.                                 <!--Click="btnListAttachment_Click"-->
  211.                                 <Separator Width="30" Background="Transparent"/>
  212.                                 <Button x:Name="btnAttchExportCSV" Content="Export to CSV" Padding="10 0 10 0" Margin="15,0,0,10" MinHeight="20" Click="btnAttchExportCSV_Click" Grid.Column="1" />
  213.                                 <!--Click="btnAttchExportCSV_Click"-->
  214.                             </Grid>
  215.                                
  216.                                 <ListView  Grid.Row="2" x:Name="lstvAttachment" Margin="0"  HorizontalAlignment="Stretch" HorizontalContentAlignment="Stretch" VerticalContentAlignment="Stretch"                                              
  217.                                                   VerticalAlignment="Stretch" Width="Auto" Height="Auto" MinHeight="290" SelectionChanged="lstvAttachment_SelectedIndexChanged" Grid.ColumnSpan="3" >
  218.                                     <!--SelectionChanged="lstvAttachment_SelectedIndexChanged"-->
  219.                                     <ListView.View >
  220.                                         <GridView >
  221.                                             <GridView.Columns>
  222.                                                 <GridViewColumn DisplayMemberBinding="{Binding Path=ACId,UpdateSourceTrigger=PropertyChanged}">
  223.                                                     <GridViewColumn.Header>
  224.                                                     <GridViewColumnHeader Tag="ACId" Click="lstvAttachment_ColumnClick" >ACId</GridViewColumnHeader>
  225.                                                         <!--Click="lstvAttachment_ColumnClick"-->
  226.                                                     </GridViewColumn.Header>
  227.                                                 </GridViewColumn>
  228.                                             <GridViewColumn DisplayMemberBinding="{Binding Path=KPacId,UpdateSourceTrigger=PropertyChanged}">
  229.                                                     <GridViewColumn.Header>
  230.                                                     <GridViewColumnHeader Tag="KPackId" Click="lstvAttachment_ColumnClick" >K-PAC Id</GridViewColumnHeader>
  231.                                                         <!--Click="lstvAttachment_ColumnClick"-->
  232.                                                     </GridViewColumn.Header>
  233.                                                 </GridViewColumn>
  234.  
  235.                                             <GridViewColumn DisplayMemberBinding="{Binding Path=KPacTitle,UpdateSourceTrigger=PropertyChanged}">
  236.                                                     <GridViewColumn.Header>
  237.                                                     <GridViewColumnHeader Tag="Title" Click="lstvAttachment_ColumnClick" >Title</GridViewColumnHeader>
  238.                                                         <!--Click="lstvAttachment_ColumnClick"-->
  239.                                                     </GridViewColumn.Header>
  240.                                                 </GridViewColumn>
  241.  
  242.                                                 <GridViewColumn DisplayMemberBinding="{Binding Path= AttachName, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}">
  243.                                                     <GridViewColumn.Header>
  244.                                                     <GridViewColumnHeader Tag="FileName" Click="lstvAttachment_ColumnClick">File/Link Name</GridViewColumnHeader>
  245.                                                         <!--Click="lstvAttachment_ColumnClick"-->
  246.                                                     </GridViewColumn.Header>
  247.                                                 </GridViewColumn>
  248.  
  249.                                             <GridViewColumn DisplayMemberBinding="{Binding Path=AttachDesc,UpdateSourceTrigger=PropertyChanged}" >
  250.                                                     <GridViewColumn.Header>
  251.                                                     <GridViewColumnHeader Tag="Description" Click="lstvAttachment_ColumnClick" >Description</GridViewColumnHeader>
  252.                                                         <!--Click="lstvAttachment_ColumnClick"-->
  253.                                                     </GridViewColumn.Header>
  254.                                                 </GridViewColumn>
  255.  
  256.                                             <GridViewColumn DisplayMemberBinding="{Binding Path= Status,UpdateSourceTrigger=PropertyChanged}" >
  257.                                                     <GridViewColumn.Header>
  258.                                                     <GridViewColumnHeader Tag="Status" Click="lstvAttachment_ColumnClick" >Status</GridViewColumnHeader>
  259.                                                         <!--Click="lstvAttachment_ColumnClick"-->
  260.                                                     </GridViewColumn.Header>
  261.                                                 </GridViewColumn>
  262.  
  263.                                                 <GridViewColumn DisplayMemberBinding="{Binding Path=AttachType, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}">
  264.                                                     <GridViewColumn.Header>
  265.                                                     <GridViewColumnHeader Tag="URL" Click="lstvAttachment_ColumnClick" >Type</GridViewColumnHeader>
  266.                                                         <!--Click="lstvAttachment_ColumnClick"-->
  267.                                                     </GridViewColumn.Header>
  268.                                                 </GridViewColumn>
  269.                                             </GridView.Columns>
  270.                                         </GridView>
  271.                                     </ListView.View>
  272.                                 </ListView>
  273.                                 <WrapPanel Grid.Row="3" Margin="3,10,10,0" Orientation="Horizontal" Grid.ColumnSpan="3">
  274.                                     <Button x:Name="btnAddAttach" Content="Add File(s)" Padding="10 0 10 0" Margin="0,0,0,0" MinHeight="20" Click="btnAddAttach_Click" />
  275.                                     <!--Click="btnAddAttach_Click"-->
  276.                                     <Separator Width="10" Background="Transparent"/>
  277.                                     <Button x:Name="btnSaveAttach" Content="Save Changes" Padding="10 0 10 0" Margin="5,0,5,0" Click="btnSaveAttach_Click" />
  278.                                     <!--Click="btnSaveAttach_Click"-->
  279.                                     <Separator Width="10" Background="Transparent"/>
  280.                                     <Button x:Name="btnRemoveAttach"  Content="Delete File(s)\Link(s)" Padding="10 0 10 0" Margin="5,0,5,0" Click="btnRemoveAttach_Click" />
  281.                                     <!--Click="btnRemoveAttach_Click"-->
  282.                                     <Separator Width="10" Background="Transparent"/>
  283.                                     <Button x:Name="btnAddLink"  Content="Add Link" Padding="10 0 10 0" Margin="5,0,5,0" Click="btnAddLink_Click" />
  284.                                     <!--Click="btnAddLink_Click"-->
  285.                                     <Separator Width="10" Background="Transparent"/>
  286.                                 <Button x:Name="btnDownloadAttach"  Content="Download" Padding="10 0 10 0" Margin="5,0,5,0" Click="btnDownloadAttach_Click" />
  287.                                     <!--Click="btnDownloadAttach_Click"-->
  288.                                     <Separator Width="10" Background="Transparent"/>
  289.                                 <Button x:Name="btnCheckZip"  Content="Check Zip" Padding="10 0 10 0" Margin="5,0,5,0" Click="btnCheckZip_Click" />
  290.                                     <!--Click="btnCheckZip_Click"
  291.                                     <Separator Width="10" Background="Transparent"/>-->
  292.                                 <Button x:Name="btnUpdateZip"  Content="Update Zip" Padding="10 0 10 0" Margin="5,0,5,0" Click="btnUpdateZip_Click" />
  293.                                     <!--Click="btnUpdateZip_Click"-->
  294.                                     <Separator Width="10" Background="Transparent"/>
  295.                                 <Button x:Name="btnCheck3DXML"  Content="Check 3DXML"  Click="btnCheck3DXML_Click" Padding="10 0 10 0" Margin="0,0,0,0" />
  296.                                     <!--Click="btnCheck3DXML_Click"-->
  297.                                 </WrapPanel>
  298.                             </Grid>                      
  299.                     </GroupBox>
  300.                 </TabItem>
  301.                 <TabItem x:Name="tabPage2" Header="Assessment Parameters and Evaluations" Height="16" VerticalAlignment="Bottom">
  302.                     <Grid Background="LightSteelBlue">
  303.  
  304.                         <!--<Grid.ColumnDefinitions>
  305.                             <ColumnDefinition Width="65*" />
  306.                             <ColumnDefinition Width="563*"/>
  307.                             <ColumnDefinition Width="67*" />
  308.                         </Grid.ColumnDefinitions>-->
  309.  
  310.                         <Grid.RowDefinitions>
  311.                             <RowDefinition Height="Auto"/>
  312.                             <RowDefinition Height="Auto"/>
  313.                             <RowDefinition Height="*"/>
  314.                         </Grid.RowDefinitions>
  315.                         <Grid x:Name="grdRadiobtns"  Grid.Row="0">
  316.                                 <Grid.ColumnDefinitions>
  317.                                 <ColumnDefinition Width="120*" />
  318.                                 <ColumnDefinition Width="67*" />
  319.                             </Grid.ColumnDefinitions>
  320.                        
  321.                         <GroupBox x:Name="grbParamOptions" Grid.Column="0" Grid.Row="0" Margin="0 15 0 10" Padding="10,0,10,0" BorderThickness="0.5" >
  322.                             <Grid Grid.Row="0">
  323.                             <Grid.ColumnDefinitions>
  324.                                 <ColumnDefinition Width="170" />
  325.                                     <ColumnDefinition Width="170"/>
  326.                                     <ColumnDefinition Width="170"/>
  327.                                     <!--<ColumnDefinition Width="170"/>-->
  328.                             </Grid.ColumnDefinitions>
  329.                                 <Grid.RowDefinitions>
  330.                                     <RowDefinition/>
  331.                                     <RowDefinition/>
  332.                                 </Grid.RowDefinitions>
  333.                                     <RadioButton x:Name="rdbAcExportXml" Content="Export E2ks AC to XML   " Grid.Row="0" Grid.Column="0" IsChecked="True" Margin="0 10 0 0" Width="150" HorizontalAlignment="Left"/>
  334.                                     <RadioButton x:Name="rdbAcImportXml" Content="Update E2ks AC from XML  " Margin="0 10 0 0" Grid.Row="0" Grid.Column="1" Checked="grbParamOptionsRadio_Checked"/>
  335.                                     <RadioButton x:Name="rdbAcExportHtml" Content="Show AC in BookView  " Margin="0 10 0 0" Grid.Row="0" Grid.Column="2" Checked="grbParamOptionsRadio_Checked" />
  336.                                     <RadioButton x:Name="rdbAcExportCsv" Content="Export E2ks AC to CSV  " Grid.Row="1" Grid.Column="0" Margin="0 10 0 0" Checked="grbParamOptionsRadio_Checked"/>
  337.                                     <RadioButton x:Name="rdbAcImportCsv" Content="Update E2ks AC from CSV  " Margin="0 10 0 0" Grid.Row="1" Grid.Column="1" Checked="grbParamOptionsRadio_Checked"/>
  338.                            
  339.                         </Grid>
  340.                         </GroupBox>
  341.                         <Button x:Name="btnAcExportUpdate"  MaxHeight="20" MaxWidth="100" Padding="10 0 10 0" Margin="5 0 0 0" Content="Export XML" HorizontalAlignment="Left" Grid.Column="1" />
  342.                         </Grid>
  343.  
  344.                         <GroupBox  x:Name="grbradiobtn" Margin="0 10 0 0" Grid.Row="1" BorderThickness="0.5" >
  345.                             <Grid >
  346.                                 <Grid.ColumnDefinitions>
  347.                                     <ColumnDefinition Width="150"/>
  348.                                     <ColumnDefinition Width="3*"/>
  349.                                     <ColumnDefinition Width="100"/>
  350.                                    
  351.                                 </Grid.ColumnDefinitions>
  352.                                 <Grid.RowDefinitions>
  353.                                     <RowDefinition/>
  354.                                     <RowDefinition/>
  355.                                 </Grid.RowDefinitions>
  356.                                 <Label x:Name="lblParamFile" Margin="10,0,10,0" Content="Select XML File" Grid.Column="0"/>
  357.                                 <TextBox x:Name="txtParamFilePath" Margin="0,2,10,0" MinWidth="300" Grid.Column="1"/>
  358.                                 <Button x:Name="btnSelParamFile" Padding="10 0 10 0" Margin="3 2 3 1" Width="80" Content="..." Grid.Column="2" Click="btnSelParamFile_Click"></Button>
  359.                              
  360.                             </Grid>
  361.                         </GroupBox>
  362.                         <ListView Margin="10" Grid.Column="0" Grid.Row="2"  x:Name="lstvParamDisplay" MinHeight="207" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" VerticalContentAlignment="Stretch">
  363.                             <ListView.View>
  364.                                 <GridView x:Name="grdvParamDisplay"/>
  365.                             </ListView.View>
  366.                         </ListView>
  367.                     </Grid>
  368.                 </TabItem>
  369.             </TabControl>
  370.         </Grid>
  371.         <GridSplitter Grid.Row="4" Grid.ColumnSpan="3" Height="5" HorizontalAlignment="Stretch" Background="Black"/>
  372.         <RichTextBox Margin="3,5,3,5" x:Name="txtResponse"  Grid.Row="5" IsDocumentEnabled="True"
  373.                          Width="Auto" Background="{DynamicResource {x:Static SystemColors.InfoBrushKey}}"
  374.                          FontFamily="Calibri" FontSize="12" VerticalScrollBarVisibility="Visible" />
  375.         <ProgressBar Grid.Row="6" Minimum="0" Maximum="100" x:Name="proStatus" ></ProgressBar>
  376.     </Grid>
  377. </Window>
  378.  
  379.  
  380.  
  381.  
  382.  
  383.  
  384. using System;
  385. using System.Collections.Generic;
  386. using System.Linq;
  387. using System.Text;
  388. using System.Windows;
  389. using System.Windows.Controls;
  390. using System.Windows.Data;
  391. using System.Windows.Documents;
  392. using System.Windows.Input;
  393. using System.Windows.Media;
  394. using System.Windows.Media.Imaging;
  395. using System.Windows.Navigation;
  396. using System.Windows.Shapes;
  397. using System.IO;
  398. using Airbus.India.AIET.AINAurosUtils;
  399. using System.ComponentModel;
  400. using System.Diagnostics;
  401. using System.Threading;
  402. using AINeCascadeClientWPF.Utility;
  403. using AINeCascadeClientWPF;
  404. using WPFFolderBrowser;
  405. using Microsoft.Win32;
  406. using System.Collections.ObjectModel;
  407.  
  408. namespace AINeCascadeClient
  409. {
  410.     /// <summary>
  411.     /// Interaction logic for AINeCascadeClientUI.xaml
  412.     /// </summary>
  413.     public partial class AINeCascadeClientUI : Window
  414.     {  // member variable to call worker services
  415.         private AINeCascadeClientWorker _myWorker;
  416.         // member variable to store Auros Settings
  417.         private E2KSSettings _userSettings;
  418.         // member variable to store user selected CoP
  419.         private string _sSelectedCoPID;
  420.         // member variable to store the mapping of project, subproject and milestones
  421.         private Dictionary<string, Dictionary<string, List<string>>> _dicProjSubProjMileStone;
  422.         // member variable to store the assessments for the selected CoP
  423.         string[] _arACIds;
  424.         // member variable to store the assessment extended elements of the selected CoP
  425.         Dictionary<string, List<string>> _dicACEEDetails;
  426.         // member variable to store the UI controls for the assessment extended elements of the selected CoP
  427.         Dictionary<Label, ComboBox> _dicACEEControls;
  428.         // member variable to store Kpac details for the selected assessment
  429.         Dictionary<KeyValuePair<string, string>, Dictionary<string, Dictionary<string, string>>> _dicACKPacDetails;
  430.         // member variable to store the status of the selected assessment
  431.         string _sSelectedACStatus;
  432.         // member variable to store the previlage of the user to modify an assessment
  433.         bool _bCanModifyAssesment;
  434.         // member variable to store the file path of selection
  435.         string _sLastSelectedFilePath;
  436.         // member variable to store the file path to upload
  437.         string _sLastPathForUpload = "";
  438.         // member variable to store index
  439.         int _nLastUploadFilterIndex = 0;
  440.         // member to manage the column sorting
  441.         AINeCascadeListViewColumnSort _lvwColumnSorter = new AINeCascadeListViewColumnSort();
  442.  
  443.         private GridViewColumnHeader listViewSortCol = null;
  444.         private SortAdorner listViewSortAdorner = null;
  445.         //private ObservableCollection<DataValue> lstItems = new ObservableCollection<DataValue>();
  446.         public ObservableCollection<DataValue> lstItems { get; set; }
  447.         public ObservableCollection<ParametersAndAssessments> lstParamDisplay { get; set; }
  448.  
  449.         public AINeCascadeClientUI()
  450.         {
  451.             InitializeComponent();
  452.             this.Loaded += new RoutedEventHandler(AINeCascadeClientUI_Loaded);
  453.             lstItems = new ObservableCollection<DataValue>();
  454.             lstParamDisplay = new ObservableCollection<ParametersAndAssessments>();
  455.             //InitializeUsingSettingsFile();
  456.             lstvAttachment.ItemsSource = null;
  457.             lstvAttachment.ItemsSource = lstItems;
  458.  
  459.             lstvParamDisplay.ItemsSource = null;
  460.             lstvParamDisplay.ItemsSource = lstParamDisplay;
  461.             ClearUIData1();
  462.             //AddHandler(GridViewColumnHeader.ClickEvent, new RoutedEventHandler(lstvAttachment_ColumnClick));
  463.             //AINFTDE2KSClientUI_Load ClientUI = new AINFTDE2KSClientUI_Load();
  464.             //DataContext = ClientUI;
  465.  
  466.         }
  467.         private void InitializeUsingSettingsFile()
  468.         {
  469.             if (AINeCascadeClientUtility.RetreiveTagValueFromAppSettingFile(out _userSettings))
  470.             {
  471.                 if (_userSettings.strE2ksServer != "" && _userSettings.strE2ksServer != "" && _userSettings.strE2ksProtocol != "")
  472.                 {
  473.                     int nPort;
  474.                     if (int.TryParse(_userSettings.strE2ksPort, out nPort))
  475.                     {
  476.                         UriBuilder uriBuilder = new UriBuilder(_userSettings.strE2ksProtocol, _userSettings.strE2ksServer, nPort, _userSettings.strE2ksServicesPath);
  477.                         string myUrl = uriBuilder.Uri.ToString();
  478.                         uriBuilder = null;
  479.  
  480.                         this.txtUrl.Text = myUrl;
  481.                     }
  482.                 }
  483.                 else
  484.                 {
  485.                     this.txtUrl.Text = "";
  486.                 }
  487.             }
  488.  
  489.             string tagLogPath = AINeCascadeClientConstants.TagE2ksWebClientLogPath;
  490.             string logPath = "";
  491.             if (AINeCascadeClientUtility.RetreiveTagValueFromSettingFile(tagLogPath, out logPath))
  492.             {
  493.                 //Set Log File
  494.                 string logFileName = logPath + "\\" + AINeCascadeClientConstants.TagLogFileName;
  495.  
  496.                 if (Directory.Exists(logPath))
  497.                 {
  498.                     AINAurosServices.SetLogPath(logFileName);
  499.                    this.txtResponse.Document.Blocks.Clear();
  500.                     AINAurosServicesUtilities.StreamWriteline("Starting eCascade Client.....");
  501.                    this.txtResponse.Document.Blocks.Add(new Paragraph(new Run(File.ReadAllText(logFileName))));
  502.                    // this.txtResponse.Document.Blocks.Add(new Paragraph(new Run(logFileName)));
  503.                    
  504.                     FileSystemWatcher fsw = new FileSystemWatcher();
  505.                     fsw.Path = logPath;
  506.                     fsw.Filter = AINeCascadeClientConstants.TagLogFileName;
  507.                     fsw.Changed += new FileSystemEventHandler(fsw_Changed);
  508.                     //fsw.Created += new FileSystemEventHandler(fsw_Changed);
  509.                     //fsw.Created += new FileSystemEventHandler(OnC);
  510.                     fsw.EnableRaisingEvents = true;
  511.                 }
  512.                 else
  513.                 {
  514.                     MessageBox.Show(String.Format("Looks like you are launching eCascade Client first time.\nSet the settings variables before operting.\nLog path {0} not set correctly.", tagLogPath), "Info", MessageBoxButton.OK, MessageBoxImage.Information);
  515.                 }
  516.             }
  517.             else
  518.             {
  519.                 MessageBox.Show("Unable to get the log setting in users configuration. Check that user configuration file exists!!", "Error", MessageBoxButton.OK, MessageBoxImage.Information);
  520.             }
  521.  
  522.         }
  523.         private void ClearUIData1()
  524.         {
  525.             cmbCoPs.SelectedItem = null;
  526.             cmbCoPs.SelectedIndex = -1;
  527.             ClearUIData2();
  528.         }
  529.         private void ClearUIData2()
  530.         {
  531.             //Clear the Dialog fields
  532.             cmbACID.SelectedItem = null;
  533.             cmbACID.SelectedIndex = -1;
  534.             cmbProjects.SelectedItem = null;
  535.             cmbProjects.SelectedIndex = -1;
  536.             cmbSubProjects.SelectedItem = null;
  537.             cmbSubProjects.SelectedIndex = -1;
  538.             cmbMilestones.SelectedItem = null;
  539.             cmbMilestones.SelectedIndex = -1;
  540.             //EE Clear
  541.             gExtEleInner.Children.Clear();
  542.             gExtEleInner.ColumnDefinitions.Clear();
  543.             gExtEleInner.RowDefinitions.Clear();
  544.  
  545.             if (_dicACEEControls != null)
  546.             {
  547.                 //ChildControls ccChildren = new ChildControls();
  548.                 //foreach (object o in ccChildren.GetChildren(grbExtendedElements, 3))
  549.                 //{
  550.                 //    if (o.GetType() == typeof(Label))
  551.                 //    {
  552.                 //        Label label = (Label)o;
  553.                 //        label = null;
  554.                 //    }
  555.                 //    if (o.GetType() == typeof(ComboBox))
  556.                 //    {
  557.                 //        ComboBox combo = (ComboBox)o;
  558.                 //        combo = null;
  559.                 //    }
  560.                 //    if (o.GetType() == typeof(StackPanel))
  561.                 //    {
  562.                 //        StackPanel stack = (StackPanel)o;
  563.                 //        stack = null;
  564.                 //    }
  565.                 //    if (o.GetType() == typeof(Grid))
  566.                 //    {
  567.                 //        Grid grid = (Grid)o;
  568.                 //        grid = null;
  569.                 //    }
  570.                 //}
  571.  
  572.                 ////grbExtendedElements.itemControls.Clear();
  573.                 //foreach (KeyValuePair<Label, ComboBox> pair in _dicACEEControls)
  574.                 //{
  575.                 //    //pair.Key.Dispose();
  576.                 //    //pair.Value.Dispose();
  577.  
  578.                 //}
  579.                 grbExtendedElements.RenderSize = new Size(grbExtendedElements.RenderSize.Width, 26);
  580.  
  581.                 _dicACEEControls.Clear();
  582.                 _dicACEEControls = null;
  583.             }
  584.  
  585.             //
  586.             ClearKpacDetails();
  587.             ClearAttachmentDetails();
  588.             ClearParameterDetails();
  589.  
  590.             //Disable the Button
  591.             btnGetCoPs.IsEnabled = true;
  592.             cmbCoPs.IsEnabled = false;
  593.             grbCopDetails.IsEnabled = false;
  594.             grbExtendedElements.IsEnabled = false;
  595.             grbAssesmentDetails.IsEnabled = false;
  596.             grbKPacDetails.IsEnabled = false;
  597.             tabAssesmentEditOptions.IsEnabled = false;
  598.         }
  599.         private void ClearParameterDetails()
  600.         {
  601.             //grdRadiobtns.Focus();
  602.             btnAcExportUpdate.IsEnabled = false;
  603.             txtParamFilePath.Text = "";
  604.             lstvParamDisplay.ItemsSource = null;
  605.             lstvParamDisplay.Items.Clear();
  606.             //lstvParamDisplay.Columns.Clear();
  607.         }
  608.         private void ClearAttachmentDetails()
  609.         {
  610.             btnAttchExportCSV.IsEnabled = false;
  611.  
  612.             btnAddAttach.IsEnabled = false;
  613.             btnRemoveAttach.IsEnabled = false;
  614.             btnDownloadAttach.IsEnabled = false;
  615.             btnCheckZip.IsEnabled = false;
  616.             btnUpdateZip.IsEnabled = false;
  617.             btnCheck3DXML.IsEnabled = false;
  618.             btnSaveAttach.IsEnabled = false;
  619.             btnAddLink.IsEnabled = false;
  620.  
  621.             lstvAttachment.ItemsSource = null;
  622.         }
  623.         private void ClearKpacDetails()
  624.         {
  625.             _dicACKPacDetails = null;
  626.             cmbKpacIds.SelectedIndex = -1;
  627.             txtKPacTitle.Text = "";
  628.             txtOccurName.Text = "";
  629.             //cmbSubOccurId.Items.Clear();
  630.             cmbSubOccurId.SelectedItem = null;
  631.             cmbSubOccurId.SelectedIndex = -1;
  632.         }
  633.         private void SetCoPs(string[] copNames)
  634.         {
  635.             if (copNames != null)
  636.             {
  637.                 //need to check
  638.                 cmbCoPs.ItemsSource = null;
  639.                 cmbCoPs.ItemsSource = copNames;
  640.  
  641.                 //Set DefaultCoP
  642.                 if (_userSettings.strDefaultCoP != "")
  643.                 {
  644.                     AINeCascadeClientUtility.AddTextToResponse("Default CoP Name " + _userSettings.strDefaultCoP);
  645.                     //int nPosDefaultCoP = this.cmbCoPs.FindStringExact(_userSettings.strDefaultCoP);                  
  646.                     int nPosDefaultCoP = this.cmbCoPs.Items.IndexOf(_userSettings.strDefaultCoP);
  647.                     if (nPosDefaultCoP != -1)
  648.                     {
  649.                         this.cmbCoPs.SelectedIndex = nPosDefaultCoP;
  650.                     }
  651.                     else
  652.                     {
  653.                         this.cmbCoPs.SelectedIndex = 0;
  654.                         cmbCoPs.IsEnabled = true;
  655.                         btnGetCoPs.IsEnabled = true;
  656.                     }
  657.                 }
  658.                 else
  659.                 {
  660.                     this.cmbCoPs.SelectedIndex = 0;
  661.                     this.cmbCoPs.IsEnabled = true;
  662.                 }
  663.             }
  664.         }
  665.         private void SetLabelDetailsForSelectedCoP()
  666.         {
  667.             if (this.cmbCoPs.SelectedIndex != -1)
  668.             {
  669.                 string strCoPID = _myWorker.GetCoPID(this.cmbCoPs.SelectedItem.ToString());
  670.                 string[] arrCoPDetails;
  671.                 if (_myWorker.GetCoPDetails(strCoPID, out arrCoPDetails))
  672.                 {
  673.                     this.lblProject.Content = arrCoPDetails[0];
  674.                     this.lblSubProject.Content = arrCoPDetails[1];
  675.                     this.lblMilestone.Content = arrCoPDetails[2];
  676.                 }
  677.             }
  678.         }
  679.         private void SetProjSubProjMilestoneDetails()
  680.         {
  681.             grbCopDetails.IsEnabled = true;
  682.             if (_dicProjSubProjMileStone != null)
  683.             {
  684.                 cmbProjects.SelectedItem = null;
  685.                 cmbProjects.SelectedIndex = -1;
  686.                 cmbProjects.SelectedItem = null;
  687.                 var projects = _dicProjSubProjMileStone.Keys.ToArray();
  688.                 projects = (string.Join("", ",", string.Join(",", projects))).Split(',');
  689.                 cmbProjects.ItemsSource = projects;
  690.                 cmbMilestones.SelectedItem = null;
  691.                 cmbMilestones.SelectedIndex = -1;
  692.             }
  693.         }
  694.         private void SetACIDs()
  695.         {
  696.             grbAssesmentDetails.IsEnabled = true;
  697.             txtACDesp.Text = "";
  698.             cmbACID.ItemsSource = null;
  699.             //cmbACID.Items.Clear();
  700.             //cmbACID.ResetText();
  701.             //if (cmbACID.SelectedItem == null)
  702.             //    return;
  703.             cmbACID.SelectedIndex = -1;
  704.             if (_arACIds != null)
  705.             {
  706.                 cmbACID.ItemsSource = _arACIds;
  707.             }
  708.         }
  709.         private void SetExtendedElements()
  710.         {
  711.             grbExtendedElements.IsEnabled = true;
  712.             gExtEleInner.Children.Clear();
  713.             gExtEleInner.ColumnDefinitions.Clear();
  714.             gExtEleInner.RowDefinitions.Clear();
  715.  
  716.             if (_dicACEEDetails == null)
  717.                 return;
  718.  
  719.             int counter = 0;
  720.             int lblXPos = 12;
  721.             int lblYPos = 20;
  722.             int cmbXPos = 169;
  723.  
  724.  
  725.             int cmbYPos = 20;
  726.  
  727.             int distBtwCmbs = 11;
  728.             int distBtwGrps = 5;
  729.  
  730.             Size eeCmbSize = cmbProjects.RenderSize;
  731.             //Grid grid = new Grid();
  732.             int column, row = 0;
  733.             ColumnDefinition c1 = new ColumnDefinition();
  734.             c1.Width = new GridLength(0.45,GridUnitType.Star);
  735.             ColumnDefinition c2 = new ColumnDefinition();
  736.             //c2.Width = new GridLength(eeCmbSize.Width + distBtwCmbs);
  737.             c2.Width = new GridLength(1, GridUnitType.Star);
  738.             gExtEleInner.ColumnDefinitions.Add(c1);
  739.             gExtEleInner.ColumnDefinitions.Add(c2);
  740.  
  741.             _dicACEEControls = new Dictionary<Label, ComboBox>();
  742.             foreach (KeyValuePair<string, List<string>> pair in _dicACEEDetails)
  743.             {
  744.                 counter++;
  745.                 RowDefinition r1 = new RowDefinition();
  746.                 r1.Height = new GridLength(eeCmbSize.Height + distBtwCmbs);
  747.                 //RowDefinition r2 = new RowDefinition();
  748.                 //r2.Height = new GridLength(10, GridUnitType.Star);
  749.                 gExtEleInner.RowDefinitions.Add(r1);
  750.                 //gExtEleInner.ColumnDefinitions.Add(c2);
  751.  
  752.                 //StackPanel eePanel = new StackPanel();
  753.                 //eePanel.Orientation = Orientation.Horizontal;
  754.                 //eePanel.HorizontalAlignment = HorizontalAlignment.Stretch;
  755.                 Label eeName = new Label();
  756.                 eeName.Name = AINeCascadeClientConstants.ExtendedElementControlLabelName + counter.ToString();
  757.                 //eeName.RenderSize = new Size(200, 13);
  758.                 eeName.Content = pair.Key + ":";
  759.                 Grid.SetColumn(eeName, 0);
  760.                 Grid.SetRow(eeName, row);
  761.                 gExtEleInner.Children.Add(eeName);
  762.  
  763.                 ComboBox eeValue = new ComboBox();
  764.                 eeValue.Name = AINeCascadeClientConstants.ExtendedElementControlComboName + counter.ToString();
  765.                 eeValue.Margin = new Thickness(0, 5, 0, 5);
  766.                 //eeValue.Width = eeCmbSize.Width;
  767.                 //eeValue.Height = eeCmbSize.Height;
  768.                 eeValue.IsEditable = true;
  769.                 eeValue.IsTextSearchEnabled = true;
  770.                 //eeValue.Items.Add("");
  771.                 //eeValue.Items.Add(pair.Value.ToList());
  772.  
  773.                 //projects = (string.Join("", ",", string.Join(",", pair.Value.ToArray()))).Split(',');
  774.  
  775.                 eeValue.ItemsSource = (string.Join("", ",", string.Join(",", pair.Value.ToArray()))).Split(',');
  776.                 eeValue.SelectedIndex = 0;
  777.                 eeValue.SelectionChanged += new SelectionChangedEventHandler(cmbExtendedElements_SelectedIndexChanged);
  778.                 Grid.SetColumn(eeValue, 1);
  779.                 Grid.SetRow(eeValue, row);
  780.                 gExtEleInner.Children.Add(eeValue);
  781.                 //eePanel.Children.Add(eeValue);
  782.  
  783.                 //sExtEleInner.Children.Add(eePanel);
  784.                 _dicACEEControls.Add(eeName, eeValue);
  785.                 row++;
  786.             }
  787.  
  788.             grbExtendedElements.RenderSize = new Size(grbExtendedElements.RenderSize.Width, counter * (eeCmbSize.Height + distBtwCmbs) + distBtwCmbs * 2);
  789.             grbExtendedElements.UpdateLayout();
  790.             //grbExtendedElements.Location = new System.Drawing.Point(grbCopDetails.Location.X, grbCopDetails.Location.Y + grbCopDetails.Size.Height + distBtwGrps);
  791.  
  792.             //grbAssesmentDetails.Location = new System.Drawing.Point(grbExtendedElements.Location.X, grbExtendedElements.Location.Y + grbExtendedElements.Size.Height + distBtwGrps);
  793.             //grbKPacDetails.Location = new System.Drawing.Point(grbAssesmentDetails.Location.X, grbAssesmentDetails.Location.Y + grbAssesmentDetails.Size.Height + distBtwGrps);
  794.  
  795.             //int grpHgt = grbCopDetails.RenderSize.Height + grbExtendedElements.RenderSize.Height + grbAssesmentDetails.RenderSize.Height + grbKPacDetails.RenderSize.Height + distBtwGrps * 3;
  796.             //splitContainer2.SplitterDistance = grpHgt + distBtwGrps;
  797.             //int splitDist = Convert.ToInt32(this.ClientSize.Height * 0.66);
  798.             //splitContainer2.SplitterDistance = splitDist;
  799.         }
  800.         private void SetUIDetailsForSelectedCoP()
  801.         {
  802.             string copName = cmbCoPs.SelectedItem.ToString();
  803.             AINeCascadeClientUtility.AddTextToResponse("Getting Assessment Details Of CoP: " + copName);
  804.             //Mark Change
  805.             //proStatus.Style = ProgressBarStyle.Marquee;
  806.             BackgroundWorker backgroundWorker = new BackgroundWorker();
  807.             backgroundWorker.DoWork += ((S, E) =>
  808.             {
  809.                 _sSelectedCoPID = _myWorker.GetCoPID(copName);
  810.  
  811.                 _myWorker.GetAssesmentDetailsOfCoP(_sSelectedCoPID, out _dicProjSubProjMileStone, out _arACIds, out _dicACEEDetails);
  812.             });
  813.  
  814.             backgroundWorker.RunWorkerCompleted += ((S, E) =>
  815.             {
  816.                 // Get the error  thrown in DoWork
  817.                 if (E.Error != null)
  818.                 {
  819.                     AINeCascadeClientUtility.AddTextToResponse(string.Format("Error in thread: {0}", E.Error));
  820.                 }
  821.  
  822.                 if (_dicProjSubProjMileStone != null)
  823.                 {
  824.                     // Set UI
  825.                     AINeCascadeClientUtility.AddTextToResponse(" Updating UI with Project, Sub-Project and Milestone Details");
  826.                     SetProjSubProjMilestoneDetails();
  827.  
  828.                     AINeCascadeClientUtility.AddTextToResponse(" Updating UI with AC IDs");
  829.                     _arACIds = (string.Join("", ",", string.Join(",", _arACIds))).Split(',');
  830.                     SetACIDs();
  831.  
  832.                     AINeCascadeClientUtility.AddTextToResponse(" Updating UI with Extended Elements");
  833.                     SetExtendedElements();
  834.                 }
  835.                 else
  836.                 {
  837.                     AINeCascadeClientUtility.AddTextToResponse("Assessment Details Of CoP: " + copName + " could not be retrieved:");
  838.                 }
  839.                 //Enable the Button
  840.                 cmbCoPs.IsEnabled = true;
  841.                 btnGetCoPs.IsEnabled = true;
  842.                 //Mark Change
  843.                 //if (proStatus.Style == ProgressBarStyle.Marquee)
  844.                 //{
  845.                 //    proStatus.Style = ProgressBarStyle.Blocks;
  846.                 //}
  847.             });
  848.             backgroundWorker.RunWorkerAsync();
  849.         }
  850.         private void btnOpenSetting_Click(object sender, RoutedEventArgs e)
  851.         {
  852.             AINeCascadeClientSettingUI formSetting = new AINeCascadeClientSettingUI();
  853.             var retStat = formSetting.ShowDialog();
  854.             if (retStat.HasValue && retStat.Value)
  855.             {
  856.                 _myWorker = new AINeCascadeClientWorker();
  857.                 ClearUIData1();
  858.             }
  859.         }
  860.         private void btnGetCoPs_Click(object sender, RoutedEventArgs e)
  861.         {
  862.             ClearUIData1();
  863.             AINeCascadeClientUtility.AddTextToResponse("Getting list of All CoPs");
  864.             BackgroundWorker backgroundWorker = new BackgroundWorker();
  865.             string[] copNames = null;
  866.  
  867.             //need to check
  868.             //proStatus.Style = ProgressBarStyle.Marquee;
  869.             //proStatus.IsIndeterminate = true;
  870.  
  871.             backgroundWorker.DoWork += ((S, E) =>
  872.             {
  873.                 _myWorker.GetAllCoPNames(out copNames);
  874.             });
  875.              
  876.  
  877.             backgroundWorker.RunWorkerCompleted += ((S, E) =>
  878.             {
  879.                 // Get the error  thrown in DoWork
  880.                 if (E.Error != null)
  881.                 {
  882.                     AINeCascadeClientUtility.AddTextToResponse(string.Format("Error in thread: {0}", E.Error));
  883.                 }
  884.  
  885.                 // Set CoPs
  886.                 if (copNames != null)
  887.                 {
  888.                     AINeCascadeClientUtility.AddTextToResponse("Number of CoP found: " + copNames.Length);
  889.                     //var a = string.Join(",", copNames);
  890.                     //var b = string.Join("", ",", a);
  891.                     //var c = b.Split(',');
  892.                     copNames = (string.Join("", ",", string.Join(",", copNames))).Split(',');
  893.                     SetCoPs(copNames);
  894.                 }
  895.                 else
  896.                 {
  897.                     AINeCascadeClientUtility.AddTextToResponse("List of CoP could not be retrieved:");
  898.                 }
  899.  
  900.                 //need to check
  901.                 //if (proStatus.Style == ProgressBarStyle.Marquee)
  902.                 //{
  903.                 //    proStatus.Style = ProgressBarStyle.Blocks;
  904.                 //}
  905.             });
  906.             backgroundWorker.RunWorkerAsync();
  907.         }
  908.         private void cmbProjects_SelectedIndexChanged(object sender, RoutedEventArgs e)
  909.         {
  910.             //if (cmbProjects.SelectedItem == null)
  911.             //    return;
  912.             if (cmbProjects.SelectedItem != null)
  913.             {
  914.                 PopulateSubProjects(cmbProjects.SelectedItem.ToString());
  915.             }
  916.             else
  917.             {
  918.                 cmbSubProjects.SelectedItem = null;
  919.                 cmbSubProjects.SelectedIndex = -1;
  920.                 cmbMilestones.SelectedItem = null;
  921.                 cmbMilestones.SelectedIndex = -1;
  922.             }
  923.             FilterACIDs();
  924.         }
  925.         private void cmbSubProjects_SelectedIndexChanged(object sender, RoutedEventArgs e)
  926.         {
  927.             //if (cmbSubProjects.SelectedItem == null)
  928.             //    return;
  929.  
  930.             if (cmbSubProjects.SelectedItem != null)
  931.             {
  932.                 PopulateMilestones(cmbProjects.SelectedItem.ToString(), this.cmbSubProjects.SelectedItem.ToString());
  933.             }
  934.             else
  935.             {
  936.                 cmbMilestones.SelectedItem = null;
  937.                 cmbMilestones.SelectedIndex = -1;
  938.             }
  939.             FilterACIDs();
  940.         }
  941.         private void cmbMilestones_SelectedIndexChanged(object sender, RoutedEventArgs e)
  942.         {
  943.             if (cmbMilestones.SelectedItem == null)
  944.                 return;
  945.             FilterACIDs();
  946.         }
  947.         private void cmbExtendedElements_SelectedIndexChanged(object sender, RoutedEventArgs e)
  948.         {
  949.             FilterACIDs();
  950.         }
  951.         private void PopulateSubProjects(string selProject)
  952.         {
  953.             Dictionary<string, List<string>> subProjMileStone;
  954.             if (_dicProjSubProjMileStone.TryGetValue(selProject, out subProjMileStone))
  955.             {
  956.                 //cmbSubProjects.SelectedItem = null;
  957.                 //cmbSubProjects.SelectedIndex = -1;
  958.                 var subProjects = (subProjMileStone.Keys.ToArray());
  959.                 Array.Sort(subProjects);
  960.                 subProjects = string.Join("", ",", string.Join(",", (subProjects))).Split(',');
  961.                 cmbSubProjects.ItemsSource = subProjects;
  962.                 //cmbMilestones.SelectedItem = null;
  963.                 //cmbMilestones.SelectedIndex = -1;
  964.             }
  965.         }
  966.         private void cmbCoPs_SelectedIndexChanged(object sender, SelectionChangedEventArgs e)
  967.         {
  968.             ClearUIData2();
  969.  
  970.             if (cmbCoPs.SelectedIndex != -1 && cmbCoPs.SelectedItem.ToString() != "")
  971.             {
  972.                 SetLabelDetailsForSelectedCoP();
  973.                 SetUIDetailsForSelectedCoP();
  974.                 ClearAttachmentDetails();
  975.                 ClearParameterDetails();
  976.             }
  977.             //else
  978.             //{
  979.             //    cmbCoPs.Enabled = true;
  980.             //    btnGetCoPs.Enabled = true;
  981.             //}
  982.         }
  983.         private void PopulateMilestones(string selProject, string selSubProject)
  984.         {
  985.             Dictionary<string, List<string>> subProjMileStone;
  986.             if (_dicProjSubProjMileStone.TryGetValue(selProject, out subProjMileStone))
  987.             {
  988.                 List<string> milestones;
  989.                 if (subProjMileStone.TryGetValue(selSubProject, out milestones))
  990.                 {
  991.                     cmbMilestones.ItemsSource = null;
  992.                     cmbMilestones.SelectedItem = null;
  993.                     var mileStones = milestones.ToArray();
  994.                     mileStones = (string.Join("", ",", string.Join(",", mileStones))).Split(',');
  995.                     cmbMilestones.ItemsSource = mileStones;
  996.                 }
  997.             }
  998.         }
  999.         private void SetAssesmentModifiableStatus()
  1000.         {
  1001.             //if (_sSelectedACStatus == null)
  1002.             //    return;
  1003.             //string assessmentStatus = _sSelectedACStatus.ToUpper();
  1004.             //if (assessmentStatus == "ASSESSMENT COMPLETE" || assessmentStatus == "APPROVAL READY" || assessmentStatus == "ARCHIVE")
  1005.             //{
  1006.             //    _bCanModifyAssesment = false;
  1007.             //}
  1008.             //else
  1009.             //{
  1010.             //    _bCanModifyAssesment = true;
  1011.             //}
  1012.  
  1013.             if (_sSelectedACStatus != null)
  1014.             {
  1015.                 string assessmentStatus = _sSelectedACStatus.ToUpper();
  1016.                 if (assessmentStatus == "ASSESSMENT COMPLETE" || assessmentStatus == "APPROVAL READY" || assessmentStatus == "ARCHIVE")
  1017.                 {
  1018.                     _bCanModifyAssesment = false;
  1019.                 }
  1020.                 else
  1021.                 {
  1022.                     _bCanModifyAssesment = true;
  1023.                 }
  1024.             }
  1025.             else
  1026.             {
  1027.                 _bCanModifyAssesment = true;
  1028.             }
  1029.  
  1030.         }
  1031.         private void cmbACID_SelectedIndexChanged(object sender, SelectionChangedEventArgs e)
  1032.         {
  1033.             ClearAttachmentDetails();
  1034.             ClearParameterDetails();
  1035.  
  1036.             var strSelACID = cmbACID.SelectedValue;
  1037.             if (strSelACID != null)
  1038.             {
  1039.                 Dictionary<string, List<string>> acEEDetails;
  1040.  
  1041.                 string strProjectId;
  1042.                 string strSubProjectId;
  1043.                 string strMileStone;
  1044.                 string strAcDesp;
  1045.  
  1046.                 Dictionary<string, string> selEEDetails;
  1047.                 bool hasSelEEVals = GetSeletedEEValues(out selEEDetails);
  1048.  
  1049.                 if (_myWorker.GetAssesmentDetails(strSelACID.ToString(), out acEEDetails, out strProjectId, out strSubProjectId, out strMileStone, out strAcDesp, out _sSelectedACStatus))
  1050.                 {
  1051.                     //Set Modifiable Status
  1052.                     SetAssesmentModifiableStatus();
  1053.  
  1054.                     //set project
  1055.                     this.cmbProjects.SelectionChanged -= new SelectionChangedEventHandler(this.cmbProjects_SelectedIndexChanged);
  1056.                     this.cmbProjects.SelectedItem = strProjectId;
  1057.                     this.cmbProjects.SelectionChanged += new SelectionChangedEventHandler(this.cmbProjects_SelectedIndexChanged);
  1058.  
  1059.                     //set sub project
  1060.                     this.PopulateSubProjects(strProjectId);
  1061.                     this.cmbSubProjects.SelectionChanged -= new SelectionChangedEventHandler(this.cmbSubProjects_SelectedIndexChanged);
  1062.                     this.cmbSubProjects.SelectedItem = strSubProjectId;
  1063.                     this.cmbSubProjects.SelectionChanged += new SelectionChangedEventHandler(this.cmbSubProjects_SelectedIndexChanged);
  1064.  
  1065.                     //set milestone
  1066.                     this.PopulateMilestones(strProjectId, strSubProjectId);
  1067.                     this.cmbMilestones.SelectionChanged -= new SelectionChangedEventHandler(this.cmbMilestones_SelectedIndexChanged);
  1068.                     this.cmbMilestones.SelectedItem = strMileStone;
  1069.                     this.cmbMilestones.SelectionChanged += new SelectionChangedEventHandler(this.cmbMilestones_SelectedIndexChanged);
  1070.  
  1071.                     //set AC Desc
  1072.                     this.cmbACID.SelectionChanged -= new SelectionChangedEventHandler(this.cmbACID_SelectedIndexChanged);
  1073.                     cmbACID.SelectedItem = strSelACID;
  1074.                     this.cmbACID.SelectionChanged += new SelectionChangedEventHandler(this.cmbACID_SelectedIndexChanged);
  1075.                     txtACDesp.Text = strAcDesp;
  1076.  
  1077.                     //set EE
  1078.                     foreach (KeyValuePair<Label, ComboBox> pair in _dicACEEControls)
  1079.                     {
  1080.                         List<string> eeValues;
  1081.                         string _lblReplaceString = ReplaceLabelContent(pair.Key.Content.ToString());
  1082.                         string eeName = _lblReplaceString;
  1083.                         if (acEEDetails.TryGetValue(eeName, out eeValues))
  1084.                         {
  1085.                             pair.Value.SelectedItem = null;
  1086.                             pair.Value.SelectedIndex = -1;
  1087.                             pair.Value.ItemsSource = (string.Join("", ",", string.Join(",", eeValues.ToArray()))).Split(',');
  1088.  
  1089.                             bool setSelectionDone = false;
  1090.                             //Set prev Sel EE
  1091.                             if (hasSelEEVals)
  1092.                             {
  1093.                                 string eeValue;
  1094.                                 if (selEEDetails.TryGetValue(eeName, out eeValue))
  1095.                                 {
  1096.                                     pair.Value.SelectionChanged -= new SelectionChangedEventHandler(this.cmbExtendedElements_SelectedIndexChanged);
  1097.                                     pair.Value.SelectedItem = eeValue;
  1098.                                     pair.Value.SelectionChanged += new SelectionChangedEventHandler(this.cmbExtendedElements_SelectedIndexChanged);
  1099.                                     setSelectionDone = true;
  1100.                                 }
  1101.                             }
  1102.                             if (!setSelectionDone)
  1103.                             {
  1104.                                 pair.Value.SelectionChanged -= new SelectionChangedEventHandler(this.cmbExtendedElements_SelectedIndexChanged);
  1105.                                 pair.Value.SelectedIndex = 1;
  1106.                                 pair.Value.SelectionChanged += new SelectionChangedEventHandler(this.cmbExtendedElements_SelectedIndexChanged);
  1107.                             }
  1108.                         }
  1109.                         else
  1110.                         {
  1111.                             pair.Value.SelectedItem = null;
  1112.                             pair.Value.SelectedIndex = -1;
  1113.                         }
  1114.                     }
  1115.  
  1116.                     ////Set prev Sel EE
  1117.                     //if (hasSelEEVals)
  1118.                     //{
  1119.                     //    foreach (KeyValuePair<string, string> pair in selEEDetails)
  1120.                     //    {
  1121.                     //        var reqCtrPair = _dicACEEControls.First(ctrPair => ctrPair.Key.Text == pair.Key + ":");
  1122.  
  1123.                     //        reqCtrPair.Value.SelectedIndexChanged -= new System.EventHandler(this.cmbExtendedElements_SelectedIndexChanged);
  1124.                     //        reqCtrPair.Value.SelectedItem = pair.Value;
  1125.                     //        reqCtrPair.Value.SelectedIndexChanged += new System.EventHandler(this.cmbExtendedElements_SelectedIndexChanged);
  1126.                     //    }
  1127.                     //}
  1128.  
  1129.                     grbKPacDetails.IsEnabled = true;
  1130.                     tabAssesmentEditOptions.IsEnabled = true;
  1131.                     rdbAcExportXml.IsChecked = true;
  1132.                 }
  1133.                 else
  1134.                 {
  1135.                     grbKPacDetails.IsEnabled = false;
  1136.                     tabAssesmentEditOptions.IsEnabled = false;
  1137.                 }
  1138.                 SetKPacsForSelectedAC(strSelACID.ToString());
  1139.             }
  1140.             else
  1141.             {
  1142.                 //ClearAssesmentAndEeDetailsFilters();
  1143.                 grbKPacDetails.IsEnabled = false;
  1144.                 tabAssesmentEditOptions.IsEnabled = false;
  1145.             }
  1146.  
  1147.  
  1148.         }
  1149.         private void ClearAssesmentAndEeDetailsFilters()
  1150.         {
  1151.             cmbACID.SelectedIndex = -1;
  1152.             txtACDesp.Text = "";
  1153.             //cmbProjects.ItemsSource = null;
  1154.             cmbSubProjects.ItemsSource = null;
  1155.             cmbMilestones.ItemsSource = null;
  1156.             cmbProjects.SelectedIndex = -1;
  1157.             //cmbSubProjects.SelectedItem = null;
  1158.             //cmbSubProjects.SelectedIndex = -1;
  1159.             //cmbMilestones.SelectedItem = null;
  1160.             //cmbMilestones.SelectedIndex = -1;
  1161.  
  1162.             foreach (KeyValuePair<string, List<string>> pair in _dicACEEDetails)
  1163.             {
  1164.                 var reqCtrPair = _dicACEEControls.First(ctrPair => ctrPair.Key.Content.ToString() == pair.Key.ToString() + ":");
  1165.                 reqCtrPair.Value.SelectedItem = null;
  1166.                 reqCtrPair.Value.SelectedIndex = -1;
  1167.                 reqCtrPair.Value.ItemsSource = (string.Join("", ",", string.Join(",", pair.Value.ToArray()))).Split(',');
  1168.             }
  1169.         }
  1170.         private void btnClearFilters_Click(object sender, RoutedEventArgs e)
  1171.         {
  1172.             ClearAssesmentAndEeDetailsFilters();
  1173.             SetACIDs();
  1174.         }
  1175.         private void btnGetAssesments_Click(object sender, RoutedEventArgs e)
  1176.         {
  1177.             string strSelProjectId = (cmbProjects.SelectedIndex != -1) ? cmbProjects.SelectedItem.
  1178.             ToString() : "";
  1179.             string strSelSubProjectId = (cmbSubProjects.SelectedIndex != -1) ? cmbSubProjects.
  1180.             SelectedItem.ToString() : "";
  1181.             string strSelMileStone = (cmbMilestones.SelectedIndex != -1) ? cmbMilestones.SelectedItem.
  1182.             ToString() : "";
  1183.             Dictionary<string, string> selEEDetails = new Dictionary<string, string>();
  1184.             foreach (KeyValuePair<Label, ComboBox> pair in _dicACEEControls)
  1185.             {
  1186.                 string strEEName = pair.Key.Content.ToString().Replace(":", "");
  1187.                 string strEEValue = (pair.Value.SelectedIndex != -1) ? pair.Value.SelectedItem.ToString
  1188.                 () : "";
  1189.                 if (strEEValue != "")
  1190.                 {
  1191.                     selEEDetails.Add(strEEName, strEEValue);
  1192.                 }
  1193.             }
  1194.             string[] filteredACs;
  1195.             Dictionary<string, List<string>> filteredEEDetails;
  1196.             if (_myWorker.GetAssesments(strSelProjectId, strSelSubProjectId, strSelMileStone, selEEDetails, out filteredACs, out filteredEEDetails))
  1197.             {
  1198.                
  1199.                 cmbACID.Items.Clear();
  1200.                 //cmbACID.ResetText();
  1201.                 cmbACID.Items.Add("");
  1202.                 cmbACID.Items.Add(filteredACs);
  1203.             }
  1204.             else
  1205.             {
  1206.                 cmbACID.Items.Clear();
  1207.                 //cmbACID.ResetText();
  1208.             }
  1209.             txtACDesp.Text = "";
  1210.             ClearAttachmentDetails();
  1211.             ClearParameterDetails();
  1212.             tabAssesmentEditOptions.IsEnabled = false;
  1213.         }
  1214.         private bool GetSeletedEEValues(out Dictionary<string, string> selEEDetails)
  1215.         {
  1216.             selEEDetails = new Dictionary<string, string>();
  1217.  
  1218.             foreach (KeyValuePair<Label, ComboBox> pair in _dicACEEControls)
  1219.             {
  1220.                 //string strEEName = pair.Key.Text.Replace(":", "");
  1221.                 string strEEName = pair.Key.Content.ToString();  //Mark
  1222.                 // string gg = replaceString(strEEName);
  1223.                 string strEEValue = (pair.Value.SelectedIndex != -1) ? pair.Value.SelectedItem.ToString() : "";
  1224.                 if (strEEValue != "")
  1225.                 {
  1226.                     selEEDetails.Add(strEEName, strEEValue);
  1227.                 }
  1228.             }
  1229.  
  1230.             if (selEEDetails.Count > 0)
  1231.             {
  1232.                 return true;
  1233.             }
  1234.             else
  1235.             {
  1236.                 selEEDetails = null;
  1237.                 return false;
  1238.             }
  1239.         }
  1240.         private void FilterACIDs()
  1241.         {
  1242.             string strSelProjectId = (cmbProjects.SelectedIndex != -1) ? cmbProjects.SelectedItem.ToString() : "";
  1243.             string strSelSubProjectId = (cmbSubProjects.SelectedIndex != -1) ? cmbSubProjects.SelectedItem.ToString() : "";
  1244.             string strSelMileStone = (cmbMilestones.SelectedIndex != -1) ? cmbMilestones.SelectedItem.ToString() : "";
  1245.  
  1246.             Dictionary<string, string> selEEDetails = new Dictionary<string, string>();
  1247.  
  1248.             GetSeletedEEValues(out selEEDetails);
  1249.  
  1250.             string[] filteredACs;
  1251.             Dictionary<string, List<string>> filteredEEDetails;
  1252.  
  1253.             if (_myWorker.GetAssesments(strSelProjectId, strSelSubProjectId, strSelMileStone, selEEDetails, out filteredACs, out filteredEEDetails))
  1254.             {
  1255.                 cmbACID.SelectedItem = null;
  1256.                 cmbACID.SelectedIndex = -1;
  1257.                 cmbACID.ItemsSource = (string.Join("", ",", string.Join(",", filteredACs))).Split(',');
  1258.  
  1259.                 //EE
  1260.                 foreach (KeyValuePair<Label, ComboBox> pair in _dicACEEControls)
  1261.                 {
  1262.                     List<string> eeValues;
  1263.                     string _lblReplaceString = ReplaceLabelContent(pair.Key.Content.ToString());
  1264.                     if (filteredEEDetails.TryGetValue(_lblReplaceString, out eeValues))
  1265.                     {
  1266.                         pair.Value.ItemsSource = null;
  1267.                         // pair.Value.SelectedIndex = -1;
  1268.  
  1269.                         pair.Value.ItemsSource = (string.Join("", ",", string.Join(",", eeValues.ToArray()))).Split(',');
  1270.                     }
  1271.                     else
  1272.                     {
  1273.                         pair.Value.ItemsSource = null;
  1274.                         pair.Value.SelectedIndex = -1;
  1275.                     }
  1276.                 }
  1277.  
  1278.                 //Set prev Sel EE
  1279.                 if (selEEDetails != null)
  1280.                 {
  1281.                     foreach (KeyValuePair<string, string> pair in selEEDetails)
  1282.                     {
  1283.                         var reqCtrPair = _dicACEEControls.First(ctrPair => ctrPair.Key.Content == pair.Key + ":");
  1284.                         reqCtrPair.Value.SelectionChanged -= this.cmbExtendedElements_SelectedIndexChanged;
  1285.                         reqCtrPair.Value.SelectedItem = pair.Value;
  1286.                         reqCtrPair.Value.SelectionChanged += this.cmbExtendedElements_SelectedIndexChanged;
  1287.                     }
  1288.                 }
  1289.             }
  1290.             else
  1291.             {
  1292.                 //cmbACID.SelectedItem = null;
  1293.                 //cmbACID.SelectedIndex = -1;
  1294.             }
  1295.  
  1296.             txtACDesp.Text = "";
  1297.             ClearKpacDetails();
  1298.             ClearAttachmentDetails();
  1299.             ClearParameterDetails();
  1300.             grbKPacDetails.IsEnabled = false;
  1301.             tabAssesmentEditOptions.IsEnabled = false;
  1302.         }
  1303.         private void GetKPacIdsFromACKPacDetails(out string[] arrKPackName)
  1304.         {
  1305.             arrKPackName = null;
  1306.             List<string> lstKPackName = new List<string>();
  1307.  
  1308.             // Check for null for the kpacs for the selected assessment.
  1309.             if (_dicACKPacDetails != null)
  1310.             {
  1311.                 foreach (var kpacID in _dicACKPacDetails.Keys)
  1312.                 {
  1313.                     if (_dicACKPacDetails[kpacID].Count > 1)
  1314.                     {
  1315.                         foreach (string occID in _dicACKPacDetails[kpacID].Keys)
  1316.                         {
  1317.                             lstKPackName.Add(kpacID.Key + "#" + occID);
  1318.                         }
  1319.                     }
  1320.                     else
  1321.                     {
  1322.                         lstKPackName.Add(kpacID.Key);
  1323.                     }
  1324.                 }
  1325.             }
  1326.  
  1327.             arrKPackName = lstKPackName.ToArray();
  1328.         }
  1329.         private void SetKPacsForSelectedAC(string strSelACID)
  1330.         {
  1331.             ClearKpacDetails();
  1332.  
  1333.             if (strSelACID != "")
  1334.             {
  1335.                 if (_myWorker.GetAssesmentKPac(_sSelectedCoPID, strSelACID, out _dicACKPacDetails))
  1336.                 {
  1337.                     string[] arrKPackName;
  1338.                     GetKPacIdsFromACKPacDetails(out arrKPackName);
  1339.                     arrKPackName = (string.Join("", ",", string.Join(",", arrKPackName))).Split(',');
  1340.                     cmbKpacIds.ItemsSource = arrKPackName;
  1341.                 }
  1342.                 else
  1343.                 {
  1344.                     grbKPacDetails.IsEnabled = false;
  1345.                     tabAssesmentEditOptions.IsEnabled = false;
  1346.  
  1347.                     AINeCascadeClientUtility.AddTextToResponse("Unable to Retrieve Assessment Details, User does not have read or write access to selected AC.");
  1348.                     MessageBox.Show("Unable to Retrieve Assessment Details, User does not have read or write access to selected AC.", "Info",
  1349.                                     MessageBoxButton.OK, MessageBoxImage.Information);
  1350.                 }
  1351.             }
  1352.         }
  1353.         private void GetKPacDetails(string selKpacId, out string kpacTitle, out string[] subOccIds, out string OccName)
  1354.         {
  1355.             kpacTitle = "";
  1356.             subOccIds = null;
  1357.             OccName = "";
  1358.             string strKPacID = "";
  1359.             string strOccID = "";
  1360.             string strCoPID = "";
  1361.             bool isOcc = false;
  1362.             //Get Sub OCCs
  1363.             if (selKpacId.Contains("#"))
  1364.             {
  1365.                 string[] splitStrs = selKpacId.Split(new string[] { "#" }, StringSplitOptions.None);
  1366.                 if (splitStrs.Length != 2)
  1367.                     return;
  1368.                 strKPacID = splitStrs[0];
  1369.                 strOccID = splitStrs[1];
  1370.                 isOcc = true;
  1371.             }
  1372.             else
  1373.             {
  1374.                 strKPacID = selKpacId;
  1375.                 isOcc = false;
  1376.             }
  1377.             KeyValuePair<KeyValuePair<string, string>, Dictionary<string, Dictionary<string, string>>>
  1378.             foundKpacId = _dicACKPacDetails.First(det => det.Key.Key == strKPacID);
  1379.             if (foundKpacId.Key.Key == strKPacID)
  1380.             {
  1381.                 //string[] splitStrs2 = selKpacId.Split(new string[] { "-" }, StringSplitOptions.None);
  1382.                 string[] splitStrs2 = strKPacID.Split(new string[] { "-" }, StringSplitOptions.None);
  1383.                 if (splitStrs2.Length != 2)
  1384.                     return;
  1385.                 strKPacID = splitStrs2[1];
  1386.                 strCoPID = splitStrs2[0];
  1387.                 _myWorker.GetKPacTitle(strCoPID, strKPacID, foundKpacId.Key.Value, out kpacTitle);
  1388.                 if (isOcc)
  1389.                 {
  1390.                     Dictionary<string, string> subOccIdAndOccName;
  1391.                     if (foundKpacId.Value.TryGetValue(strOccID, out subOccIdAndOccName))
  1392.                     {
  1393.                         subOccIds = subOccIdAndOccName.Keys.Except(new string[] { "0" }).ToArray();
  1394.                         OccName = subOccIdAndOccName["0"];
  1395.                     }
  1396.                 }
  1397.                 else
  1398.                
  1399.                 {
  1400.                     Dictionary<string, string> subOccIdAndOccName;
  1401.                     if (foundKpacId.Value.TryGetValue("1", out subOccIdAndOccName))
  1402.                     {
  1403.                         subOccIds = subOccIdAndOccName.Keys.Except(new string[] { "0" }).ToArray();
  1404.                         OccName = subOccIdAndOccName["0"];
  1405.                     }
  1406.                 }
  1407.             }
  1408.         }
  1409.         private void cmbKpacIds_SelectedIndexChanged(object sender, EventArgs e)
  1410.         {
  1411.             txtKPacTitle.Text = "";
  1412.             txtOccurName.Text = "";
  1413.             cmbSubOccurId.SelectedItem = null;
  1414.             cmbSubOccurId.SelectedIndex = -1;
  1415.             //cmbSubOccurId.Items.Clear();
  1416.             //cmbSubOccurId.ResetText();
  1417.             ClearAttachmentDetails();
  1418.             var strSelKpacId = cmbKpacIds.SelectedItem;
  1419.             if (strSelKpacId != null)
  1420.             {
  1421.                 string kpacTitle;
  1422.                 string[] subOccIds;
  1423.                 string occName;
  1424.                 GetKPacDetails(strSelKpacId.ToString(), out kpacTitle, out subOccIds, out occName);
  1425.                 if (subOccIds != null)
  1426.                 {
  1427.                     //cmbSubOccurId.Items.Add(subOccIds);
  1428.  
  1429.                     cmbSubOccurId.ItemsSource = subOccIds;
  1430.                 }
  1431.                 txtOccurName.Text = occName;
  1432.                 txtKPacTitle.Text = kpacTitle;
  1433.             }
  1434.         }
  1435.         private void GetSubOccurName(string selKpacId, string selSubOccurId, out string occName)
  1436.         {
  1437.             occName = "";
  1438.  
  1439.             string strKPacID = "";
  1440.             string strOccID = "";
  1441.             bool isOcc = false;
  1442.             //Get Sub OCCs
  1443.             if (selKpacId.Contains("#"))
  1444.             {
  1445.                 string[] splitStrs = selKpacId.Split(new string[] { "#" }, StringSplitOptions.None);
  1446.                 if (splitStrs.Length != 2)
  1447.                     return;
  1448.                 strKPacID = splitStrs[0];
  1449.                 strOccID = splitStrs[1];
  1450.                 isOcc = true;
  1451.             }
  1452.             else
  1453.             {
  1454.                 strKPacID = selKpacId;
  1455.                 isOcc = false;
  1456.             }
  1457.  
  1458.             KeyValuePair<KeyValuePair<string, string>, Dictionary<string, Dictionary<string, string>>> foundKpacId = _dicACKPacDetails.First(det => det.Key.Key == strKPacID);
  1459.             if (foundKpacId.Key.Key == strKPacID)
  1460.             {
  1461.                 if (isOcc)
  1462.                 {
  1463.                     Dictionary<string, string> subOccIdAndOccName;
  1464.                     if (foundKpacId.Value.TryGetValue(strOccID, out subOccIdAndOccName))
  1465.                     {
  1466.                         occName = subOccIdAndOccName[selSubOccurId];
  1467.                     }
  1468.                 }
  1469.                 else
  1470.                 {
  1471.                     Dictionary<string, string> subOccIdAndOccName;
  1472.                     if (foundKpacId.Value.TryGetValue("1", out subOccIdAndOccName))
  1473.                     {
  1474.                         occName = subOccIdAndOccName[selSubOccurId];
  1475.                     }
  1476.                 }
  1477.             }
  1478.         }
  1479.         private void cmbSubOccurId_SelectedIndexChanged(object sender, SelectionChangedEventArgs e)
  1480.         {
  1481.             txtOccurName.Text = "";
  1482.  
  1483.             ClearAttachmentDetails();
  1484.             if (cmbKpacIds.SelectedItem == null)
  1485.                 return;
  1486.  
  1487.             string strSelKpacId = cmbKpacIds.SelectedItem.ToString();
  1488.             string strSelSubOccurId = cmbSubOccurId.SelectedItem.ToString();
  1489.  
  1490.             string subOccurName;
  1491.             GetSubOccurName(strSelKpacId, strSelSubOccurId, out subOccurName);
  1492.  
  1493.             txtOccurName.Text = subOccurName;
  1494.         }
  1495.         private void btnListAttachment_Click(object sender, RoutedEventArgs e)
  1496.         {
  1497.             ClearAttachmentDetails();
  1498.             lstItems.Clear();
  1499.             AINeCascadeClientUtility.AddTextToResponse("Getting Attachments ...");
  1500.             //Get Filters
  1501.             BackgroundWorker bgWorker = new BackgroundWorker();
  1502.             List<List<string>> lstAttachmentsKpac = new List<List<string>>();
  1503.             Dictionary<int, Dictionary<string, List<List<string>>>> dicUrlsKpac = new Dictionary<int, Dictionary<string, List<List<string>>>>();
  1504.             if (cmbACID.SelectedIndex != -1)
  1505.             {
  1506.                 string strSelKpacId = "";
  1507.                 string strSelOccurrenceId = "";
  1508.                 string strSelSubOccurId = "";
  1509.                 string strCoPIDofKpac = "";
  1510.                 string strSelACID = cmbACID.SelectedItem.ToString();
  1511.  
  1512.                 if (cmbKpacIds.SelectedIndex != -1)
  1513.                 {
  1514.                     strSelKpacId = cmbKpacIds.SelectedItem.ToString();
  1515.                 }
  1516.  
  1517.                 if (cmbSubOccurId.SelectedIndex != -1)
  1518.                 {
  1519.                     strSelSubOccurId = cmbSubOccurId.SelectedItem.ToString();
  1520.                 }
  1521.                 //need to check
  1522.                 // proStatus.Style = ProgressBarStyle.Marquee;
  1523.  
  1524.                 bgWorker.DoWork += ((S, E) =>
  1525.                 {
  1526.                     if (strSelACID == "")
  1527.                     {
  1528.                         AINeCascadeClientUtility.AddTextToResponse("Assessment ID is not valid.");
  1529.                         return;
  1530.                     }
  1531.                     string[] arSelectedLinkedACIDs = null;
  1532.                     List<string> strarrUsedKPac = new List<string>();
  1533.  
  1534.                     if (strSelKpacId != "")
  1535.                     {
  1536.                         AINeCascadeClientUtility.ParseKPacString(ref strSelKpacId, out strCoPIDofKpac, out strSelOccurrenceId);
  1537.                         if (strSelSubOccurId == "")
  1538.                         {
  1539.                             strSelSubOccurId = "0";
  1540.                         }
  1541.                         arSelectedLinkedACIDs = new string[] { strSelACID };
  1542.                     }
  1543.                     else
  1544.                     {
  1545.                         // Get the updated Linked AC name
  1546.                         string strLinkedElement = "";
  1547.                         string tagLinkedElement = AINeCascadeClientConstants.TagLinkedElement;
  1548.                         if (AINeCascadeClientUtility.RetreiveTagValueFromSettingFile(tagLinkedElement, out strLinkedElement))
  1549.                         {
  1550.                             arSelectedLinkedACIDs = null;
  1551.                             _myWorker.RetreiveLinkedACNLevel(_sSelectedCoPID, strSelACID, strLinkedElement, ref arSelectedLinkedACIDs);
  1552.                         }
  1553.                     }
  1554.  
  1555.                     for (int i = 0; i < arSelectedLinkedACIDs.Length; ++i)
  1556.                     {
  1557.                         int nACId = 0;
  1558.                         if (int.TryParse(arSelectedLinkedACIDs[i], out nACId))
  1559.                         {
  1560.                             int flagAttachmentForOccurrenceOnly = 0;
  1561.                             int flagAttachmentsForCheckList = 0;
  1562.  
  1563.                             if (strSelKpacId != "")
  1564.                             {
  1565.                                 flagAttachmentForOccurrenceOnly = 0;
  1566.                                 flagAttachmentsForCheckList = 0;
  1567.                                 AINeCascadeClientUtility.AddTextToResponse(string.Format("Getting attachment names for Kpac {0}", strSelKpacId));
  1568.                             }
  1569.                             else
  1570.                             {
  1571.                                 flagAttachmentForOccurrenceOnly = 0;
  1572.                                 flagAttachmentsForCheckList = 1;
  1573.                                 AINeCascadeClientUtility.AddTextToResponse(string.Format("Getting attachment names for Checklist {0}", nACId));
  1574.                             }
  1575.  
  1576.                             Dictionary<string, List<List<string>>> urlData;
  1577.                             bool bUrlData = _myWorker.GetCheckListUrls(nACId, out urlData);
  1578.  
  1579.                             if (bUrlData)
  1580.                             {
  1581.                                 dicUrlsKpac.Add(nACId, urlData);
  1582.                             }
  1583.  
  1584.                             Dictionary<string, List<string>> attachmentDetails;
  1585.  
  1586.                             // Dictionary to keep track of the Kpac Titles
  1587.                             Dictionary<string, string> dicKpacTitles = new Dictionary<string, string>();
  1588.  
  1589.                             bool bAttachData = _myWorker.GetCheckListAttachmentNames(nACId, strSelKpacId, strSelOccurrenceId, strSelSubOccurId, _sSelectedCoPID, out attachmentDetails, flagAttachmentForOccurrenceOnly, flagAttachmentsForCheckList);
  1590.  
  1591.  
  1592.                             if (bAttachData)
  1593.                             {
  1594.                                 // Set the Kpacs for the current assessment
  1595.                                 if (i > 0)
  1596.                                 {
  1597.                                     _dicACKPacDetails = null;
  1598.                                     _myWorker.GetAssesmentKPac(_sSelectedCoPID, arSelectedLinkedACIDs[i], out _dicACKPacDetails);
  1599.                                 }
  1600.  
  1601.                                 foreach (string strAttachmentName in attachmentDetails.Keys)
  1602.                                 {
  1603.                                     string strAttachACId;
  1604.                                     string strAttachKPackId;
  1605.                                     string strAttachCopId;
  1606.                                     string strAttchOccurId;
  1607.                                     string strAttchSubOccurId;
  1608.  
  1609.                                     AINeCascadeClientUtility.ParseAttachmentString(strAttachmentName, out strAttachACId, out strAttachKPackId, out strAttachCopId, out strAttchOccurId, out strAttchSubOccurId);
  1610.                                     string strKPacFull = "";
  1611.                                     if (strAttachKPackId != "" && strAttachCopId != "" && strAttchOccurId != "" && strAttchSubOccurId != "")
  1612.                                     {
  1613.                                         if (strAttchSubOccurId != "0")
  1614.                                             strKPacFull = strAttachCopId + "-" + strAttachKPackId + " (#" + strAttchOccurId + "." + strAttchSubOccurId + ")"; //CE2KS-120 (#1.1)
  1615.                                         else if (strAttchSubOccurId == "0")
  1616.                                             strKPacFull = strAttachCopId + "-" + strAttachKPackId + " (#" + strAttchOccurId + ")"; //CE2KS-120 (#1)
  1617.                                     }
  1618.  
  1619.                                     string strKPacTitle = "";
  1620.                                     string strKPacVer = "";
  1621.                                     string strKpacKey = "";
  1622.                                     if (_dicACKPacDetails.Any(det => det.Key.Key == strAttachCopId + "-" + strAttachKPackId))
  1623.                                     {
  1624.                                         var foundKpacId = _dicACKPacDetails.First(det => det.Key.Key == strAttachCopId + "-" + strAttachKPackId);
  1625.                                         strKPacVer = foundKpacId.Key.Value;
  1626.                                         strKpacKey = strAttachCopId + "-" + strAttachKPackId + "-" + strKPacVer;
  1627.                                         if (!dicKpacTitles.ContainsKey(strKpacKey))
  1628.                                         {
  1629.                                             _myWorker.GetKPacTitle(strAttachCopId, strAttachKPackId, strKPacVer, out strKPacTitle);
  1630.                                             dicKpacTitles.Add(strKpacKey, strKPacTitle);
  1631.  
  1632.                                         }
  1633.                                     }
  1634.  
  1635.                                     List<string> rowVals = new List<string>();
  1636.                                     rowVals.Add(nACId.ToString());
  1637.                                     rowVals.Add(strKPacFull);
  1638.                                     if (dicKpacTitles.ContainsKey(strKpacKey))
  1639.                                     {
  1640.                                         rowVals.Add(dicKpacTitles[strKpacKey]);
  1641.                                     }
  1642.                                     else
  1643.                                     {
  1644.                                         rowVals.Add("");
  1645.                                     }
  1646.                                     rowVals.Add(strAttachmentName);
  1647.                                     rowVals.Add(attachmentDetails[strAttachmentName][0]);
  1648.                                     rowVals.Add("Saved");
  1649.                                     rowVals.Add("File");
  1650.  
  1651.                                     lstAttachmentsKpac.Add(rowVals);
  1652.  
  1653.                                     strarrUsedKPac.Add(nACId.ToString() + "-" + strKPacFull);
  1654.  
  1655.                                 }
  1656.                             }
  1657.                             else
  1658.                             {
  1659.                                 // Set the Kpacs for the current assessment if there is no attachments in the assessment
  1660.                                 _dicACKPacDetails = null;
  1661.                                 _myWorker.GetAssesmentKPac(_sSelectedCoPID, arSelectedLinkedACIDs[i], out _dicACKPacDetails);
  1662.                                 AINeCascadeClientUtility.AddTextToResponse("Checklist Attachments could not be retrieved. Next line contains the error returned by the Server.");
  1663.                             }
  1664.  
  1665.                             ///Add Ones without Attachments
  1666.  
  1667.                             string istrKPacE2ksString = "";
  1668.                             string strKPacE2ksToCheck = "";
  1669.  
  1670.                             // Dictionary to keep track of the Kpac Titles
  1671.                             //Dictionary<string, string> dicKpacTitles = new Dictionary<string, string>();
  1672.                             if (strSelKpacId != "")
  1673.                             {
  1674.                                 //If subOccurrence is selected
  1675.                                 if (strSelSubOccurId != "0")
  1676.                                 {
  1677.                                     istrKPacE2ksString = strCoPIDofKpac + "-" + strSelKpacId + " (#" + strSelOccurrenceId + "." + strSelSubOccurId + ")";
  1678.                                     strKPacE2ksToCheck = nACId.ToString() + "-" + strCoPIDofKpac + "-" + strSelKpacId + " (#" + strSelOccurrenceId + "." + strSelSubOccurId + ")";
  1679.                                 }
  1680.                                 else
  1681.                                 {
  1682.                                     istrKPacE2ksString = strCoPIDofKpac + "-" + strSelKpacId + " (#" + strSelOccurrenceId + ")";
  1683.                                     strKPacE2ksToCheck = nACId.ToString() + "-" + strCoPIDofKpac + "-" + strSelKpacId + " (#" + strSelOccurrenceId + ")";
  1684.  
  1685.                                 }
  1686.  
  1687.                                 string strKPacFullName = strCoPIDofKpac + "-" + strSelKpacId;
  1688.  
  1689.                                 string strKPacTitle = "";
  1690.                                 string strKPacVer = "";
  1691.                                 string strKpacKey = "";
  1692.                                 if (_dicACKPacDetails.Any(det => det.Key.Key == strCoPIDofKpac + "-" + strSelKpacId))
  1693.                                 {
  1694.                                     var foundKpacId = _dicACKPacDetails.First(det => det.Key.Key == strCoPIDofKpac + "-" + strSelKpacId);
  1695.                                     strKPacVer = foundKpacId.Key.Value;
  1696.                                     strKpacKey = strCoPIDofKpac + "-" + strSelKpacId + "-" + strKPacVer;
  1697.                                     if (!dicKpacTitles.ContainsKey(strKpacKey))
  1698.                                     {
  1699.                                         _myWorker.GetKPacTitle(strCoPIDofKpac, strSelKpacId, strKPacVer, out strKPacTitle);
  1700.                                         dicKpacTitles.Add(strKpacKey, strKPacTitle);
  1701.                                     }
  1702.                                 }
  1703.  
  1704.                                 if (strarrUsedKPac.Contains(strKPacE2ksToCheck) == false && istrKPacE2ksString != "")
  1705.                                 {
  1706.                                     List<string> rowVals = new List<string>();
  1707.                                     rowVals.Add(nACId.ToString());
  1708.                                     rowVals.Add(istrKPacE2ksString);
  1709.                                     if (dicKpacTitles.ContainsKey(strKpacKey))
  1710.                                     {
  1711.                                         rowVals.Add(dicKpacTitles[strKpacKey]);
  1712.                                     }
  1713.                                     else
  1714.                                     {
  1715.                                         rowVals.Add("");
  1716.                                     }
  1717.                                     rowVals.Add("");
  1718.                                     rowVals.Add("");
  1719.                                     rowVals.Add("");
  1720.                                     rowVals.Add("");//Type
  1721.  
  1722.                                     lstAttachmentsKpac.Add(rowVals);
  1723.                                 }
  1724.                             }
  1725.                             else
  1726.                             {
  1727.                                 List<string> lstKPackName = new List<string>();
  1728.                                 foreach (var kpacID in _dicACKPacDetails.Keys)
  1729.                                 {
  1730.                                     string[] splitStrKpacIDName = kpacID.Key.Split(new string[] { "-" }, StringSplitOptions.None);
  1731.                                     string strCopIdTemp = splitStrKpacIDName[0];
  1732.                                     string strKPackIdTemp = splitStrKpacIDName[1];
  1733.                                     string strKPacVerTemp = kpacID.Value;
  1734.                                     string strKPacTitle;
  1735.                                     string strKpacKey = strCopIdTemp + "-" + strKPackIdTemp + "-" + strKPacVerTemp;
  1736.                                     if (!dicKpacTitles.ContainsKey(strKpacKey))
  1737.                                     {
  1738.                                         _myWorker.GetKPacTitle(strCopIdTemp, strKPackIdTemp, strKPacVerTemp, out strKPacTitle);
  1739.                                         dicKpacTitles.Add(strKpacKey, strKPacTitle);
  1740.                                     }
  1741.  
  1742.                                     foreach (string strOccurIdTemp in _dicACKPacDetails[kpacID].Keys)
  1743.                                     {
  1744.                                         foreach (string strSubOccurIdTemp in _dicACKPacDetails[kpacID][strOccurIdTemp].Keys)
  1745.                                         {
  1746.                                             if (strSelKpacId != "")
  1747.                                             {
  1748.                                                 if (strSelKpacId != strKPackIdTemp || strCoPIDofKpac != strCopIdTemp || strSelOccurrenceId != strOccurIdTemp)
  1749.                                                     continue;
  1750.                                             }
  1751.                                             if (strKPackIdTemp != "" && strCopIdTemp != "" && strOccurIdTemp != "" && strSubOccurIdTemp != "")
  1752.                                             {
  1753.                                                 if (strSubOccurIdTemp != "0")
  1754.                                                     istrKPacE2ksString = strCopIdTemp + "-" + strKPackIdTemp + " (#" + strOccurIdTemp + "." + strSubOccurIdTemp + ")"; //CE2KS-120 (#1.1)
  1755.                                                 else if (strSubOccurIdTemp == "0")
  1756.                                                     istrKPacE2ksString = strCopIdTemp + "-" + strKPackIdTemp + " (#" + strOccurIdTemp + ")"; //CE2KS-120 (#1)
  1757.                                             }
  1758.                                             strKPacE2ksToCheck = nACId.ToString() + "-" + istrKPacE2ksString;
  1759.  
  1760.                                             if (strarrUsedKPac.Contains(strKPacE2ksToCheck) == false && istrKPacE2ksString != "")
  1761.                                             {
  1762.                                                 List<string> rowVals = new List<string>();
  1763.                                                 rowVals.Add(nACId.ToString());
  1764.                                                 rowVals.Add(istrKPacE2ksString);
  1765.                                                 if (dicKpacTitles.ContainsKey(strKpacKey))
  1766.                                                 {
  1767.                                                     rowVals.Add(dicKpacTitles[strKpacKey]);
  1768.                                                 }
  1769.                                                 else
  1770.                                                 {
  1771.                                                     rowVals.Add("");
  1772.                                                 }
  1773.                                                 rowVals.Add("");
  1774.                                                 rowVals.Add("");
  1775.                                                 rowVals.Add("");
  1776.                                                 rowVals.Add("");//Type
  1777.  
  1778.                                                 lstAttachmentsKpac.Add(rowVals);
  1779.                                             }
  1780.                                         }
  1781.                                     }
  1782.                                 }
  1783.                             }
  1784.                         }
  1785.                     }
  1786.                 });
  1787.  
  1788.                 bgWorker.RunWorkerCompleted += ((S, E) =>
  1789.                 {
  1790.                     // Get the error  thrown in DoWork
  1791.                     if (E.Error != null)
  1792.                     {
  1793.                         AINeCascadeClientUtility.AddTextToResponse(string.Format("Error in thread: {0}", E.Error));
  1794.                     }
  1795.                     // Revert back the Kpacs for the selected assessment
  1796.                     string strSelACid = cmbACID.SelectedItem.ToString();
  1797.                     _myWorker.GetAssesmentKPac(_sSelectedCoPID, strSelACid, out _dicACKPacDetails);
  1798.  
  1799.                     ShowAttachmentNames(lstAttachmentsKpac, dicUrlsKpac);
  1800.  
  1801.                     //need to check
  1802.                     //if (proStatus.Style == ProgressBarStyle.Marquee)
  1803.                     //{
  1804.                     //    proStatus.Style = ProgressBarStyle.Blocks;
  1805.                     //}
  1806.  
  1807.                     ////Enable Add File(s)
  1808.                     btnAddAttach.IsEnabled = true;
  1809.                     // need to check
  1810.                     // Reset the cursor
  1811.                     // this.ResetCursor();
  1812.  
  1813.                     AINeCascadeClientUtility.AddTextToResponse("Finished getting all attachments ");
  1814.                     //bgWorker.Dispose();
  1815.                 });
  1816.  
  1817.                 bgWorker.RunWorkerAsync();
  1818.             }
  1819.             else
  1820.             {
  1821.                 AINeCascadeClientUtility.AddTextToResponse("AC ID is not valid.");
  1822.             }
  1823.  
  1824.         }
  1825.         private void ShowAttachmentNames(List<List<string>> dicAttachmentsKPac, Dictionary<int, Dictionary<string, List<List<string>>>> dicUrlsKpac)
  1826.         {
  1827.             Dictionary<int, List<string>> dicUsedUrlKPac = new Dictionary<int, List<string>>();
  1828.  
  1829.             string nextKPac = "";
  1830.             //foreach (var rowVal in subItemsKPac)
  1831.             for (int i = 0; i < dicAttachmentsKPac.Count; i++)
  1832.             {
  1833.                 var rowVal = dicAttachmentsKPac[i];
  1834.                 DataValue dataValue = new DataValue();
  1835.                 //Urls
  1836.                 string urlValue = "";
  1837.                 string urlDesc = "";
  1838.                 string strAcId = rowVal[0];
  1839.                 string strKPacFull = rowVal[1];
  1840.                 dataValue.ACId = strAcId;
  1841.                 dataValue.KPacId = strKPacFull;
  1842.  
  1843.                 //DataValue dataValue = new DataValue();
  1844.                 dataValue.KPacTitle = rowVal[2];
  1845.                 dataValue.AttachName = rowVal[3];
  1846.                 dataValue.AttachDesc = rowVal[4];
  1847.                 dataValue.Status = rowVal[5];
  1848.                 dataValue.AttachType = rowVal[6];
  1849.                 lstItems.Add(dataValue);
  1850.  
  1851.                 //if (strAttachName != "")
  1852.                 //{
  1853.  
  1854.                 //    nIndxFileItemAdded = lstvAttachment.Items.IndexOf(dataValue.ACId);
  1855.                 //}
  1856.  
  1857.                 //Add to UI
  1858.                 //    ListViewItem itmKPac1 = new ListViewItem(rowVal.ToArray());
  1859.                 //    lstvAttachment.Items.Add(itmKPac1);
  1860.  
  1861.                 nextKPac = (i < dicAttachmentsKPac.Count - 1) ? dicAttachmentsKPac[i + 1][1] : "";
  1862.                 if (strKPacFull != nextKPac)
  1863.                 {
  1864.                     //int currentIdx = lstvAttachment.Items.IndexOf(dataValue);
  1865.                     int currentIdx = lstItems.IndexOf(dataValue);
  1866.  
  1867.                     int nACId = 0;
  1868.                     if (int.TryParse(strAcId, out nACId))
  1869.                     {
  1870.                         if (dicUrlsKpac.ContainsKey(nACId))
  1871.                         {
  1872.                             if (!dicUsedUrlKPac.ContainsKey(nACId))
  1873.                             {
  1874.                                 dicUsedUrlKPac.Add(nACId, new List<string>());
  1875.                             }
  1876.                             string strFileOrUrl = ""; ;
  1877.                             if (dicUrlsKpac[nACId].ContainsKey(strKPacFull) && !dicUsedUrlKPac[nACId].Contains(strKPacFull))
  1878.                             {
  1879.                                 var selectedObject = lstItems.ElementAt(currentIdx); //rowVal[3];
  1880.                                 if (selectedObject != null)
  1881.                                     strFileOrUrl = (selectedObject as DataValue).AttachName;
  1882.  
  1883.                                 bool addUrlData = false;
  1884.                                 if (strFileOrUrl == "")
  1885.                                 {
  1886.                                     addUrlData = true;
  1887.                                 }
  1888.  
  1889.                                 if (addUrlData)
  1890.                                 {
  1891.                                     urlValue = dicUrlsKpac[nACId][strKPacFull][0][0];
  1892.                                     urlDesc = dicUrlsKpac[nACId][strKPacFull][0][1];
  1893.                                     (selectedObject as DataValue).AttachName = urlValue;
  1894.                                     (selectedObject as DataValue).AttachDesc = urlDesc;
  1895.                                     (selectedObject as DataValue).Status = "Saved";
  1896.                                     (selectedObject as DataValue).AttachType = "Link";
  1897.  
  1898.                                     //lstvAttachment.Items[currentIdx].SubItems[3].Text = urlValue;
  1899.                                     //lstvAttachment.Items[currentIdx].SubItems[4].Text = urlDesc;
  1900.                                     //lstvAttachment.Items[currentIdx].SubItems[5].Text = "Saved";
  1901.                                     // lstvAttachment.Items[currentIdx].SubItems[6].Text = "Link";//Type
  1902.                                     lstItems.Add(selectedObject as DataValue);
  1903.                                 }
  1904.                                 int noOfUrls = dicUrlsKpac[nACId][strKPacFull].Count;
  1905.                                 //int noOfAdditionalRows = (addUrlData) ? noOfUrls - 1 : noOfUrls;
  1906.                                 int startIdx = (addUrlData) ? 1 : 0;
  1907.                                 for (int j = startIdx; j < noOfUrls; j++)
  1908.                                 {
  1909.                                     urlValue = dicUrlsKpac[nACId][strKPacFull][j][0];
  1910.                                     urlDesc = dicUrlsKpac[nACId][strKPacFull][j][1];
  1911.  
  1912.                                     List<string> newRowVal = new List<string>();
  1913.  
  1914.                                     dataValue = new DataValue();
  1915.                                     dataValue.ACId = (selectedObject as DataValue).ACId;
  1916.                                     dataValue.KPacId = (selectedObject as DataValue).KPacId;
  1917.                                     dataValue.KPacTitle = (selectedObject as DataValue).KPacTitle;
  1918.                                     dataValue.AttachName = urlValue;
  1919.                                     dataValue.AttachDesc = urlDesc;
  1920.                                     dataValue.AttachType = (selectedObject as DataValue).AttachType;
  1921.                                     dataValue.Status = (selectedObject as DataValue).Status;
  1922.  
  1923.                                     lstItems.Add(dataValue);
  1924.                                     //lstvAttachment.Items.Insert(currentIdx + 1, itmKPac);
  1925.                                 }
  1926.  
  1927.                                 dicUsedUrlKPac[nACId].Add(strKPacFull);
  1928.                             }
  1929.                         }
  1930.                     }
  1931.  
  1932.                 }
  1933.             }
  1934.             lstvAttachment.ItemsSource = null;
  1935.             lstvAttachment.ItemsSource = lstItems;
  1936.             //Reset the cursor
  1937.             //this.ResetCursor();
  1938.  
  1939.             //Resize Columns
  1940.             //for (int i = 0; i < lstvAttachment.Columns.Count; i++)
  1941.             //{
  1942.             //    if (i == 1 || i == 2 || i == 3)
  1943.             //    {
  1944.             //        lstvAttachment.AutoResizeColumn(i, ColumnHeaderAutoResizeStyle.ColumnContent);
  1945.             //    }
  1946.             //    else
  1947.             //    {
  1948.             //        lstvAttachment.AutoResizeColumn(i, ColumnHeaderAutoResizeStyle.HeaderSize);
  1949.             //    }
  1950.             //}
  1951.  
  1952.             //Enable Export CSV
  1953.             if (lstItems.Count > 0)
  1954.             {
  1955.                 btnAttchExportCSV.IsEnabled = true;
  1956.             }
  1957.             //}
  1958.         }
  1959.         //private void lstvAttachment_ColumnClick(object sender, RoutedEventArgs e)
  1960.         //{
  1961.         //    GridViewColumnHeader headerClicked = e.OriginalSource as GridViewColumnHeader;
  1962.         //    // Determine if the clicked column is already the column that is being sorted.
  1963.         //    if ((int)headerClicked.Tag == _lvwColumnSorter.get_SortColumn())
  1964.         //    {
  1965.         //        // Reverse the current sort direction for this column.
  1966.         //        if (_lvwColumnSorter.get_Order() == ListSortDirection.Ascending)
  1967.         //        {
  1968.         //            _lvwColumnSorter.set_Order(ListSortDirection.Descending);
  1969.         //        }
  1970.         //        else
  1971.         //        {
  1972.         //            _lvwColumnSorter.set_Order(ListSortDirection.Ascending);
  1973.         //        }
  1974.         //    }
  1975.         //    else
  1976.         //    {
  1977.         //        // Set the column number that is to be sorted. By default, this is in ascending order.
  1978.         //        _lvwColumnSorter.set_SortColumn((int)headerClicked.Tag);
  1979.         //        _lvwColumnSorter.set_Order(ListSortDirection.Ascending);
  1980.         //    }
  1981.         //    //lstvAttachment.ItemContainerGenerator.ContainerFromIndex(0);
  1982.         //    //Perform the sort with these new sort options.
  1983.         //    lstvAttachment.Sort();
  1984.         //}
  1985.  
  1986.         //private void lstvAttachment_SelectedIndexChanged(object sender, RoutedEventArgs e)
  1987.         //{
  1988.         //    btnAddAttach.IsEnabled = false;
  1989.         //    btnRemoveAttach.IsEnabled = false;
  1990.         //    btnDownloadAttach.IsEnabled = false;
  1991.         //    btnCheckZip.IsEnabled = false;
  1992.         //    btnUpdateZip.IsEnabled = false;
  1993.         //    btnCheck3DXML.IsEnabled = false;
  1994.         //    btnSaveAttach.IsEnabled = false;
  1995.         //    btnAddLink.IsEnabled = false;
  1996.         //    if (lstvAttachment.SelectedItems.Count == 1)
  1997.         //    {
  1998.         //        btnAddAttach.IsEnabled = _bCanModifyAssesment;
  1999.         //        btnAddLink.IsEnabled = _bCanModifyAssesment;
  2000.         //        var selectedObject = lstvAttachment.SelectedItems[0] as DataValue;
  2001.         //        if (selectedObject == null)
  2002.         //        {
  2003.         //            return;
  2004.         //        }
  2005.         //        string strAttachmentName = selectedObject.AttachName;
  2006.         //        bool isNotSavedFile = selectedObject.Status == "Not Saved" ? true : false;
  2007.         //        string strAttachmentType = selectedObject.AttachType;
  2008.         //        btnSaveAttach.IsEnabled = (isNotSavedFile && _bCanModifyAssesment) ? true : false;
  2009.         //        if (strAttachmentName != "")
  2010.         //        {
  2011.         //            // Check the status of Remove button from the configuration
  2012.         //            string strTagName = AINeCascadeClientConstants.TagDeleteButtonOption;
  2013.         //            string strValue = "";
  2014.         //            AINeCascadeClientUtility.RetreiveTagValueFromSettingFile(strTagName, out strValue);
  2015.         //            if (strValue.ToLower() == "true")
  2016.         //            {
  2017.         //                // Set the Remove button to enabled only if the file/link statu is "Not Saved"                      
  2018.         //                if (isNotSavedFile)
  2019.         //                {
  2020.         //                    btnRemoveAttach.IsEnabled = true;
  2021.         //                }
  2022.         //                else
  2023.         //                {
  2024.         //                    btnRemoveAttach.IsEnabled = false;
  2025.         //                }
  2026.         //            }
  2027.         //            // Set the Remove button to enabled based on the assessment status
  2028.         //            else
  2029.         //            {
  2030.         //                btnRemoveAttach.IsEnabled = _bCanModifyAssesment;
  2031.         //            }
  2032.         //            if (strAttachmentType == "File")
  2033.         //            {
  2034.         //                btnDownloadAttach.IsEnabled = !isNotSavedFile;
  2035.         //                if (strAttachmentName.IndexOf(".7z") > 0)
  2036.         //                {
  2037.         //                    btnCheckZip.IsEnabled = !isNotSavedFile;
  2038.         //                }
  2039.         //                else if (strAttachmentName.IndexOf(".3dxml") > 0)
  2040.         //                {
  2041.         //                    btnCheck3DXML.IsEnabled = !isNotSavedFile;
  2042.         //                }
  2043.         //            }
  2044.         //        }
  2045.         //    }
  2046.         //    else if (lstvAttachment.SelectedItems.Count > 1)
  2047.         //    {
  2048.         //        btnAddAttach.IsEnabled = false;
  2049.         //        bool foundSingleZip = false;
  2050.         //        bool foundCadPart = false;
  2051.         //        bool foundOtherFiles = false;
  2052.         //        bool foundNotSavedFiles = false;
  2053.         //        for (int nIndexSelected = 0; nIndexSelected < (lstvAttachment.SelectedItems.Count); nIndexSelected++)
  2054.         //        {
  2055.         //            var selectedObject = lstvAttachment.SelectedItems[nIndexSelected] as DataValue;
  2056.         //            if (selectedObject == null)
  2057.         //            {
  2058.         //                return;
  2059.         //            }
  2060.         //            string strAttachmentName = selectedObject.AttachName;
  2061.         //            bool isNotSavedFile = selectedObject.Status == "Not Saved" ? true : false;
  2062.         //            if (!foundNotSavedFiles)
  2063.         //            {
  2064.         //                foundNotSavedFiles = isNotSavedFile;
  2065.         //            }
  2066.         //            if (strAttachmentName != "")
  2067.         //            {
  2068.         //                if (strAttachmentName.IndexOf(".7z") > 0)
  2069.         //                {
  2070.         //                    if (!foundSingleZip)
  2071.         //                    {
  2072.         //                        foundSingleZip = true;
  2073.         //                    }
  2074.         //                    /*else
  2075.         //                    {
  2076.         //                    foundSingleZip = false;
  2077.         //                    }*/
  2078.         //                }
  2079.         //                else if ((strAttachmentName.IndexOf(".CATPart") > 0) || (strAttachmentName.IndexOf(".CATProduct") > 0) ||
  2080.         //                (strAttachmentName.IndexOf(".cgr") > 0) || (strAttachmentName.IndexOf(" .wrl") > 0))
  2081.         //                {
  2082.         //                    foundCadPart = true;
  2083.         //                }
  2084.         //                else
  2085.         //                {                          
  2086.         //                    foundOtherFiles = true;
  2087.         //                }
  2088.         //            }
  2089.         //        }
  2090.         //        if (foundNotSavedFiles)
  2091.         //        {
  2092.         //            btnSaveAttach.IsEnabled = _bCanModifyAssesment;
  2093.         //        }
  2094.         //        if (foundSingleZip && foundCadPart && !foundOtherFiles)
  2095.         //        {
  2096.         //            btnUpdateZip.IsEnabled = _bCanModifyAssesment;
  2097.         //        }
  2098.         //        if (foundSingleZip || foundCadPart || foundOtherFiles)
  2099.         //        {
  2100.         //            // Check the status of Remove button from the configuration
  2101.         //            btnDownloadAttach.IsEnabled = true;
  2102.         //            string strTagName = AINeCascadeClientConstants.TagDeleteButtonOption;
  2103.         //            string strValue;
  2104.         //            AINeCascadeClientUtility.RetreiveTagValueFromSettingFile(strTagName, out strValue);
  2105.         //            if (strValue.ToLower() == "true")
  2106.         //            {
  2107.         //                btnRemoveAttach.IsEnabled = false;
  2108.         //            }
  2109.         //            else
  2110.         //            {
  2111.         //                btnRemoveAttach.IsEnabled = _bCanModifyAssesment;
  2112.         //            }
  2113.         //        }
  2114.         //    }
  2115.         //}
  2116.         private void btnDownloadAttach_Click(object sender, RoutedEventArgs e)
  2117.         {
  2118.             string strFilePath = _userSettings.strSavingDir;
  2119.             if (!Directory.Exists(strFilePath))
  2120.             {
  2121.                 WPFFolderBrowserDialog selSaveFolder = new WPFFolderBrowserDialog();
  2122.                 //FolderBrowserDialog selSaveFolder = new FolderBrowserDialog();
  2123.                 selSaveFolder.Title = "Set path to \"Attachment download location\" in Settings to avoid this pop-up..";
  2124.                 //selSaveFolder.ShowNewFolderButton = true;
  2125.                 if (_sLastSelectedFilePath != "")
  2126.                     selSaveFolder.FileName = _sLastSelectedFilePath;
  2127.                 var dlgRes = selSaveFolder.ShowDialog();
  2128.                 if (dlgRes.HasValue && dlgRes.Value)
  2129.                 {
  2130.                     strFilePath = selSaveFolder.FileName;
  2131.                     _sLastSelectedFilePath = selSaveFolder.FileName;
  2132.                 }                
  2133.                 else
  2134.                 {
  2135.                     AINeCascadeClientUtility.AddTextToResponse(" No file downloaded as User cancel the action.");
  2136.                     return;
  2137.                 }
  2138.                 AINeCascadeClientUtility.AddTextToResponse(string.Format("Attachment downloading at <file://{0}> -", strFilePath));
  2139.             }
  2140.             bool flagAttachmentDownloaded = false;
  2141.             bool flagYesToAll = false;
  2142.             AINeCascadeClientFileReplaceUI.FileReplaceAction fileReplaceAction =
  2143.             AINeCascadeClientFileReplaceUI.FileReplaceAction.None;
  2144.             for (int i = 0; i < lstvAttachment.SelectedItems.Count; i++)
  2145.             {
  2146.                 var selectedObject = lstvAttachment.SelectedItems[i] as DataValue;
  2147.                 if (selectedObject == null)
  2148.                 {
  2149.                     return;
  2150.                 }
  2151.                 string strAttachmentName = selectedObject.AttachName;
  2152.                 string strSavedStatus = selectedObject.Status;
  2153.                 string strACID = selectedObject.ACId;
  2154.                 // Files that are not saved in Kpac will Not be downloaded.
  2155.                 if (strSavedStatus == "Not Saved" || strAttachmentName == "")
  2156.                 {
  2157.                     continue;
  2158.                 }
  2159.                 string strAttachNameToDwnld = strAttachmentName;
  2160.                 // Find the minumum limit where the position of "_" wil start cl-X-A_A-B-C-D_YYYYYYYYYY.ZZZ 14 chars
  2161.                 int nIndxUS = strAttachmentName.IndexOf("_", 14);
  2162.                 if (nIndxUS >= 0)
  2163.                 {
  2164.                     strAttachNameToDwnld = strAttachmentName.Substring(nIndxUS + 1);
  2165.                 }
  2166.                 string strCompleteFilePath = System.IO.Path.Combine(strFilePath, strAttachNameToDwnld);
  2167.                 if (File.Exists(strCompleteFilePath))
  2168.                 {
  2169.                     if (flagYesToAll == false)
  2170.                     {
  2171.                         fileReplaceAction = AINeCascadeClientFileReplaceUI.ShowConfirmFileReplace
  2172.                         (strAttachNameToDwnld);
  2173.                     }
  2174.                     if (fileReplaceAction == AINeCascadeClientFileReplaceUI.FileReplaceAction.No)
  2175.                     {
  2176.                         fileReplaceAction = AINeCascadeClientFileReplaceUI.FileReplaceAction.None;
  2177.                         continue;
  2178.                     }
  2179.                     else if (fileReplaceAction == AINeCascadeClientFileReplaceUI.FileReplaceAction.
  2180.                     NoToAll)
  2181.                     {
  2182.                         break;
  2183.                     }
  2184.                     else if (fileReplaceAction == AINeCascadeClientFileReplaceUI.FileReplaceAction.Yes)
  2185.                     {
  2186.                         fileReplaceAction = AINeCascadeClientFileReplaceUI.FileReplaceAction.None;
  2187.                     }
  2188.                     else if (fileReplaceAction == AINeCascadeClientFileReplaceUI.FileReplaceAction.
  2189.                     YesToAll)
  2190.                     {
  2191.                         fileReplaceAction = AINeCascadeClientFileReplaceUI.FileReplaceAction.None;
  2192.                         flagYesToAll = true;
  2193.                     }
  2194.                 }
  2195.                 if (_myWorker.GetCheckListAttachment(strACID, strAttachmentName, strCompleteFilePath))
  2196.                 {
  2197.                     flagAttachmentDownloaded = true;
  2198.                     AINeCascadeClientUtility.AddTextToResponse(String.Format("Copied the attachment '{0} ' as '{1}'", strAttachmentName, strAttachNameToDwnld));
  2199.                 }
  2200.             }
  2201.             if (flagAttachmentDownloaded)
  2202.             {
  2203.                 //Open directory after download optional
  2204.                 string strDirOpenOption = "";
  2205.                 string tagDirOpenOption = AINeCascadeClientConstants.TagBoolOpenDir;
  2206.                 AINeCascadeClientUtility.RetreiveTagValueFromSettingFile(tagDirOpenOption, out strDirOpenOption);
  2207.                 if (strDirOpenOption == "Yes")
  2208.                 {
  2209.                     Process.Start("explorer.exe", strFilePath);
  2210.                 }
  2211.             }
  2212.             else
  2213.             {
  2214.                 AINeCascadeClientUtility.AddTextToResponse("Please select Attachment(s) to download.");
  2215.             }
  2216.             lstvAttachment.SelectedItems.Clear();
  2217.         }
  2218.         private void btnAttchExportCSV_Click(object sender, RoutedEventArgs e)
  2219.         {
  2220.             AINeCascadeClientUtility.AddTextToResponse("Exporting to CSV ...");
  2221.             try
  2222.             {
  2223.                 //This event is used to export attachment names in csv
  2224.                 OpenFileDialog objOpenFileDialog = new OpenFileDialog();
  2225.                 // Set the Open File Dialog Properties
  2226.                 objOpenFileDialog.Filter = "csv file (*.csv)|*.csv";
  2227.                 objOpenFileDialog.FilterIndex = 2;
  2228.                 objOpenFileDialog.RestoreDirectory = true;
  2229.                 string strSeparator = "";
  2230.                 string TagCSVDelim = AINeCascadeClientConstants.TagCSVDelim;
  2231.                 AINeCascadeClientUtility.RetreiveTagValueFromSettingFile(TagCSVDelim, out strSeparator)
  2232.                 ;
  2233.                 objOpenFileDialog.CheckFileExists = false;
  2234.                 if (objOpenFileDialog.ShowDialog() == true)
  2235.                 {
  2236.                     string selExportCSVFile = objOpenFileDialog.FileName;
  2237.                     StreamWriter fileExportCSV = new System.IO.StreamWriter(@selExportCSVFile);
  2238.                     int iItemCount = lstvAttachment.Items.Count;
  2239.                     string attachHeaderLine = AINeCascadeClientConstants.attachHdrACID + strSeparator +
  2240.                     AINeCascadeClientConstants.attachHdrKPacId +
  2241.                     strSeparator +
  2242.                     AINeCascadeClientConstants.attachHdrTitle + strSeparator
  2243.                     +
  2244.                     AINeCascadeClientConstants.attachHdrFileLinkName +
  2245.                     strSeparator +
  2246.                     AINeCascadeClientConstants.attachHdrFileLinkDesc +
  2247.                     strSeparator +
  2248.                     AINeCascadeClientConstants.attachHdrType;
  2249.                     fileExportCSV.WriteLine(attachHeaderLine);
  2250.                     for (int nIndexItm = 0; nIndexItm < iItemCount; nIndexItm++)
  2251.                     {
  2252.                         var selectedObject = lstvAttachment.Items[nIndexItm] as DataValue;
  2253.                         if (selectedObject == null)
  2254.                         {
  2255.                             return;
  2256.                         }
  2257.                         string strAttachmentName = selectedObject.AttachName;
  2258.                         if (selectedObject.Status == "Saved" || selectedObject.Status == "")
  2259.                         {
  2260.                             //Write KPacId, FileName, Description
  2261.                             string strACId = selectedObject.ACId;
  2262.                             string strKPacId = selectedObject.KPacId;
  2263.                             string strKPacTitle = selectedObject.KPacTitle;
  2264.                             string strFileOrLinkName = selectedObject.AttachName;                            
  2265.                             string strFileOrLinkDesc = selectedObject.AttachDesc;
  2266.                             string strAttachType = selectedObject.AttachType;
  2267.                             string strLine = strACId + strSeparator + strKPacId + strSeparator +
  2268.                             strKPacTitle + strSeparator + strFileOrLinkName + strSeparator + strFileOrLinkDesc + strSeparator +
  2269.                             strAttachType;
  2270.                             fileExportCSV.WriteLine(strLine);
  2271.                         }
  2272.                     }
  2273.                     fileExportCSV.Close();
  2274.                     AINeCascadeClientUtility.AddTextToResponse(String.Format("Attachment details exported in <file://{0}>", selExportCSVFile));
  2275.                     AINeCascadeClientUtility.AddTextToResponse("--------------------------------------------------------------------------------------------------------");
  2276.                     AINeCascadeClientUtility.AddTextToResponse("In case of batch file upload through csv, please specify the Type column with File or Link appropriately");
  2277.                     AINeCascadeClientUtility.AddTextToResponse("--------------------------------------------------------------------------------------------------------");
  2278.                 }
  2279.             }
  2280.             catch
  2281.             {
  2282.                 AINeCascadeClientUtility.AddTextToResponse("\nException occurred during processing");
  2283.             }
  2284.         }
  2285.         private void btnCheckZip_Click(object sender, RoutedEventArgs e)
  2286.         {
  2287.             try
  2288.             {
  2289.                 var selectedObject = lstvAttachment.SelectedItems[0] as DataValue;
  2290.                 if (selectedObject == null)
  2291.                 {
  2292.                     return;
  2293.                 }
  2294.                 string strAttachmentName = selectedObject.AttachName;
  2295.                 string strACID = selectedObject.ACId;
  2296.                 string strTempDir = "";
  2297.                 string tagDownloadLocation = AINeCascadeClientConstants.TagSavingDir;
  2298.                 if (AINeCascadeClientUtility.RetreiveTagValueFromSettingFile(tagDownloadLocation, out strTempDir))
  2299.                 {
  2300.                     string strFilePath = System.IO.Path.Combine(strTempDir, strAttachmentName);
  2301.                     if (_myWorker.GetCheckListAttachment(strACID, strAttachmentName, strFilePath))
  2302.                     {
  2303.                         AINeCascadeClientUtility.AddTextToResponse(String.Format("Copied the attachment '{0}' to '{1}'", strAttachmentName, strFilePath));
  2304.                         //Create a new process
  2305.                         Process obj7zProcess = new Process();
  2306.                         try
  2307.                         {
  2308.                             // Use 7-zip and Initialize process information.
  2309.                             obj7zProcess.StartInfo.FileName = "7za.exe";
  2310.                             obj7zProcess.StartInfo.Arguments = " l \"" + strFilePath + "\"";
  2311.                             obj7zProcess.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
  2312.                             obj7zProcess.StartInfo.RedirectStandardOutput = true;
  2313.                             obj7zProcess.StartInfo.UseShellExecute = false;
  2314.                             // Start process and wait for it to exit
  2315.                             obj7zProcess.Start();
  2316.                             int iReadFlag = 0;
  2317.                             List<string> str7ZipFileNameList = new List<string>();
  2318.                             AINeCascadeClientUtility.AddTextToResponse("Contents of the zip file listed below...");
  2319.                             //Read through the standrard output to get the 7-zip contents
  2320.                             while (obj7zProcess.StandardOutput.Peek() >= 0)
  2321.                             {
  2322.                                 string strLineBuffer = obj7zProcess.StandardOutput.ReadLine();
  2323.                                 /*
  2324.                                 Typically the output of 7z listing of file contents is shown below...
  2325.                                
  2326.                                 7-Zip (A) 4.23 Copyright (c) 1999-2005 Igor Pavlov 2005-06-29
  2327.                                 Listing archive: test.7z
  2328.                                 Date Time Attr Size Compressed Name
  2329.                                 ------------------- ----- ------------ ------------ ------------
  2330.                                 2010-02-17 18:37:00 ....A 2941440 756139
  2331.                                 Nacelle_Characteristics_Ext
  2332.                                 raction_Template\Specification_EngineCharacteristicsExtraction_v5.doc
  2333.                                 2010-09-29 19:43:46 ....A 14080
  2334.                                 Nacelle_Characteristics_Ext
  2335.                                 raction_Template\CatNacelleT.catalog
  2336.                                 2010-09-29 22:43:13 ....A 1659699
  2337.                                 Nacelle_Characteristics_Ext
  2338.                                 raction_Template\eDBD_Engine_Characteristics_Extraction_V1-1.CATPart
  2339.                                 2011-08-24 14:12:24 D...A 0 0
  2340.                                 Nacelle_Characteristics_Ext
  2341.                                 raction_Template
  2342.                                 ------------------- ----- ------------ ------------ ------------
  2343.                                 4615219 756139 4 files
  2344.                                 Here as the file contents start after the '-----' dashed line so we
  2345.                                 use the "-----" as the start string where we collect the file names
  2346.                                 */
  2347.                                 if (strLineBuffer.Contains("-----") || iReadFlag == 1)
  2348.                                 {
  2349.                                     // Ignore the first occurance of the dashed line
  2350.                                     if (strLineBuffer.Contains("-----") && iReadFlag == 1)
  2351.                                         break;
  2352.                                     // Set the flag to tell that we have got the first occurance of dashed line
  2353.                                     iReadFlag = 1;
  2354.                                     //
  2355.                                     if (!strLineBuffer.Contains("-----"))
  2356.                                     {
  2357.                                         string[] splitLineBuffer = strLineBuffer.Split(new string[] { " " }, StringSplitOptions.RemoveEmptyEntries);
  2358.                                         int iTokenCount = 5;
  2359.                                         string strFileRelativeName = "";
  2360.                                         if (splitLineBuffer.Length > 6)
  2361.                                         {
  2362.                                             while (iTokenCount != splitLineBuffer.Length)
  2363.                                             {
  2364.                                                 strFileRelativeName += splitLineBuffer[iTokenCount];
  2365.                                                 if (iTokenCount != splitLineBuffer.Length - 1)
  2366.                                                 {
  2367.                                                     strFileRelativeName += " ";
  2368.                                                 }
  2369.                                                 ++iTokenCount;
  2370.                                             }
  2371.                                         }
  2372.                                         else
  2373.                                         {
  2374.                                             strFileRelativeName = splitLineBuffer[splitLineBuffer.Length
  2375.                                             - 1];
  2376.                                         }
  2377.                                         int index = strFileRelativeName.LastIndexOf('\\');
  2378.                                         string str7ZipFileName;
  2379.                                         // Get the file name after removing the relative paths
  2380.                                         if (index == -1)
  2381.                                         {
  2382.                                             str7ZipFileName = strFileRelativeName;
  2383.                                         }
  2384.                                         else
  2385.                                         {
  2386.                                             str7ZipFileName = strFileRelativeName.Substring(index + 1,
  2387.                                             strFileRelativeName.Length - index - 1);
  2388.                                         }
  2389.                                         AINeCascadeClientUtility.AddTextToResponse(str7ZipFileName);
  2390.                                         // Collect the file names
  2391.                                        
  2392.                                         str7ZipFileNameList.Add(str7ZipFileName);
  2393.                                     }
  2394.                                 }
  2395.                             }
  2396.                             AINeCascadeClientUtility.AddTextToResponse(String.Format(" '{0}' Files found in the Zip.", str7ZipFileNameList.Count));
  2397.                             //Highlight the contents of the zip in the Attachment List View if the state is checked
  2398.                             if (str7ZipFileNameList.Count > 0)
  2399.                             {
  2400.                                 for (int i = 0; i < lstvAttachment.Items.Count; ++i)
  2401.                                 {
  2402.                                     string strAttName = selectedObject.AttachName;
  2403.                                     // Find the minumum limit where the position of "_" wil start cl-XA_A-B-C-D_YYYYYYYYYY.ZZZ 14 chars
  2404.                                     if (strAttName != "")
  2405.                                     {
  2406.                                         int indexOfUnderScore = strAttName.IndexOf("_", 14);
  2407.                                         int lengthOfAttachemntName = strAttName.Length;
  2408.                                         strAttName = strAttName.Substring(indexOfUnderScore + 1,
  2409.                                         (lengthOfAttachemntName - (indexOfUnderScore + 1)));
  2410.                                         if ((strAttName.IndexOf(".CATPart") < 0) && (strAttName.IndexOf
  2411.                                         (".CATProduct") < 0))
  2412.                                         {
  2413.                                             ListViewItem row = lstvAttachment.ItemContainerGenerator.ContainerFromIndex(i) as ListViewItem;
  2414.                                             row.Background = Brushes.White;
  2415.                                             continue;
  2416.                                         }
  2417.                                         if (str7ZipFileNameList.Contains(strAttName))
  2418.                                         {
  2419.                                             ListViewItem row = lstvAttachment.ItemContainerGenerator.ContainerFromIndex(i) as ListViewItem;
  2420.                                             row.Background = Brushes.LawnGreen;
  2421.                                         }
  2422.                                         else
  2423.                                         {
  2424.                                             //In case of prehighlited, will clear it
  2425.                                             ListViewItem row = lstvAttachment.ItemContainerGenerator.ContainerFromIndex(i) as ListViewItem;
  2426.                                             row.Background = Brushes.White;
  2427.                                         }
  2428.                                     }
  2429.                                 }
  2430.                             }
  2431.                         }
  2432.                         catch (Exception ea)
  2433.                         {
  2434.                             AINeCascadeClientUtility.AddTextToResponse(ea.Message);
  2435.                         }
  2436.                     }
  2437.                     else
  2438.                     {
  2439.                         AINeCascadeClientUtility.AddTextToResponse(String.Format("Could not retrieve the attachment '{0}'", strAttachmentName));
  2440.                     }
  2441.                 }
  2442.                 else
  2443.                 {
  2444.                     AINeCascadeClientUtility.AddTextToResponse(String.Format("Download location : {0} not found. Please check settings.", tagDownloadLocation));
  2445.                 }
  2446.             }
  2447.             catch
  2448.             {
  2449.                 AINeCascadeClientUtility.AddTextToResponse("Exception caused during 7zip check.");
  2450.             }
  2451.         }
  2452.         private void btnUpdateZip_Click(object sender, RoutedEventArgs e)
  2453.         {
  2454.             string fileDownloadPath = "";
  2455.             string strZipAttachmentPath = "";
  2456.             string zipFileAttName = "";
  2457.            
  2458.             string zipFileAttDesc = "";
  2459.             string strAttachmentName7z = "";
  2460.             List<string> addToZip = new List<string>();
  2461.             string strTempDir = "";
  2462.             string tagDownloadLocation = AINeCascadeClientConstants.TagSavingDir;
  2463.             AINeCascadeClientUtility.RetreiveTagValueFromSettingFile(tagDownloadLocation, out strTempDir);
  2464.             if (Directory.Exists(strTempDir))
  2465.             {
  2466.                 string strTempZipDir = System.IO.Path.Combine(strTempDir, "update_zip");
  2467.                 Directory.CreateDirectory(strTempZipDir);
  2468.                 for (int nIndexSelected = 0; nIndexSelected < (lstvAttachment.SelectedItems.Count); nIndexSelected++)
  2469.                 {
  2470.                     var selectedObject = lstvAttachment.SelectedItems[0] as DataValue;
  2471.                     if (selectedObject == null)
  2472.                     {
  2473.                         return;
  2474.                     }
  2475.                     string strAttachmentName = selectedObject.AttachName;
  2476.                     string strACID = selectedObject.ACId;
  2477.                     if (strAttachmentName.IndexOf(".7z") > 0)
  2478.                     {
  2479.                         strAttachmentName7z = strAttachmentName;
  2480.                         fileDownloadPath = System.IO.Path.Combine(strTempDir, strAttachmentName);
  2481.                         strZipAttachmentPath = fileDownloadPath;
  2482.                         // Find the minumum limit where the position of "_" wil start cl-X-A_A-B-CD_YYYYYYYYYY.ZZZ 14 chars
  2483.                         int indexOfUnderScore = strAttachmentName.IndexOf("_", 14);
  2484.                         int lengthOfAttachemntName = strAttachmentName.Length;
  2485.                         zipFileAttName = strAttachmentName.Substring(indexOfUnderScore + 1,
  2486.                         (lengthOfAttachemntName - (indexOfUnderScore + 1)));
  2487.                         zipFileAttDesc = selectedObject.AttachDesc;
  2488.                         if (zipFileAttDesc == "")
  2489.                         {
  2490.                             zipFileAttDesc = " ";
  2491.                         }
  2492.                     }
  2493.                     else
  2494.                     {
  2495.                         // Find the minumum limit where the position of "_" wil start cl-X-A_A-B-CD_YYYYYYYYYY.ZZZ 14 chars
  2496.                         int indexOfUnderScore = strAttachmentName.IndexOf("_", 14);
  2497.                         int lengthOfAttachemntName = strAttachmentName.Length;
  2498.                         string fileToAdd = strAttachmentName.Substring(indexOfUnderScore + 1,
  2499.                         (lengthOfAttachemntName - (indexOfUnderScore + 1)));
  2500.                         fileDownloadPath = System.IO.Path.Combine(strTempZipDir, fileToAdd);
  2501.                     }
  2502.                     //Download File
  2503.                     if (_myWorker.GetCheckListAttachment(strACID, strAttachmentName, fileDownloadPath))
  2504.                     {
  2505.                         AINeCascadeClientUtility.AddTextToResponse(String.Format("Copied the attachment '{0}' to '{1}'", strAttachmentName, fileDownloadPath));
  2506.                     }
  2507.                     else
  2508.                     {
  2509.                         AINeCascadeClientUtility.AddTextToResponse(String.Format("Failed to download attachment '{0}' to '{1}'", strAttachmentName, fileDownloadPath));
  2510.                         return;
  2511.                     }
  2512.                 }
  2513.                 Process obj7zProcess = new Process();
  2514.                 try
  2515.                 {
  2516.                     string[] strFilenames = Directory.GetFiles(strTempZipDir);
  2517.                     if (strFilenames.Length > 0)
  2518.                    
  2519.                     {
  2520.                         string strArg = null;
  2521.                         for (int j = 0; j < strFilenames.Length; ++j)
  2522.                         {
  2523.                             strArg += " " + "\"" + strFilenames[j] + "\"";
  2524.                         }
  2525.                         // Use 7-zip and Initialize process information.
  2526.                         obj7zProcess.StartInfo.FileName = "7za.exe";
  2527.                         obj7zProcess.StartInfo.Arguments = " u \"" + strZipAttachmentPath + "\" " +
  2528.                         strArg;
  2529.                         obj7zProcess.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
  2530.                         obj7zProcess.StartInfo.RedirectStandardOutput = true;
  2531.                         obj7zProcess.StartInfo.UseShellExecute = false;
  2532.                         // Start process and wait for it to exit
  2533.                         //Process^ obj7zChildProcess = Process::Start(obj7zProcess);
  2534.                         obj7zProcess.Start();
  2535.                         AINeCascadeClientUtility.AddTextToResponse(obj7zProcess.StandardOutput.ReadToEnd
  2536.                         ());
  2537.                         //Get the selected Kpac Id
  2538.                         string strKpacId = "";
  2539.                         string strOccurrenceId = "";
  2540.                         string strSubOccurId = "";
  2541.                         string strCoPID = "";
  2542.                         string strACIdToProcess = "";
  2543.                         //AINFTDE2ksUtility::ParseKPackString(strKpacId, strCoPID, strOccurrenceId);
  2544.                         AINeCascadeClientUtility.ParseAttachmentString(strAttachmentName7z, out strACIdToProcess, out strKpacId, out strCoPID,
  2545.                         out strOccurrenceId, out strSubOccurId);
  2546.                         string strKPackIdFullName = strCoPID + "-" + strKpacId + "-" + strOccurrenceId +
  2547.                         "-" + strSubOccurId;
  2548.                         //Remove the existing attachment
  2549.                         if (_myWorker.DeleteCheckListAttachment(strACIdToProcess, strAttachmentName7z))
  2550.                         {
  2551.                             //Upload the file in the Kpac
  2552.                             if (_myWorker.SetCheckListAttachment(strACIdToProcess, strKPackIdFullName,
  2553.                             zipFileAttName, zipFileAttDesc, strZipAttachmentPath))
  2554.                             {
  2555.                                 AINeCascadeClientUtility.AddTextToResponse("Zip file updated. ");
  2556.                             }
  2557.                         }
  2558.                     }
  2559.                     else
  2560.                     {
  2561.                         AINeCascadeClientUtility.AddTextToResponse("No file found to update. ");
  2562.                     }
  2563.                 }
  2564.                 catch (Exception ex)
  2565.                 {
  2566.                     AINeCascadeClientUtility.AddTextToResponse(ex.Message);
  2567.                 }
  2568.                 // Delete the extra directory created for update zip
  2569.                 if (Directory.Exists(strTempZipDir))
  2570.                 {
  2571.                     Directory.Delete(strTempZipDir, true);
  2572.                 }
  2573.             }
  2574.             else
  2575.             {
  2576.                 MessageBox.Show(String.Format("Download location : {0} not found. Please check settings.", "Attachment download location"), "Info", MessageBoxButton.OK, MessageBoxImage.Information);
  2577.                 AINeCascadeClientUtility.AddTextToResponse(String.Format("Download location : {0} not found. Please check settings.", "Attachment download location"));
  2578.             }
  2579.         }
  2580.         private void BuildProductStructure(AINE2ks3dxmlReader xmlreader, string pchProductName, ref List<string> strListProdNames)
  2581.         {
  2582.             bool lbResult = false;
  2583.             List<string> subProductNames;
  2584.             lbResult = xmlreader.GetSubProductsInProduct(pchProductName, out subProductNames);
  2585.             for (int i = 0; i < subProductNames.Count; ++i)
  2586.             {
  2587.                 strListProdNames.Add(subProductNames[i]);
  2588.                 BuildProductStructure(xmlreader, subProductNames[i], ref strListProdNames);
  2589.             }
  2590.             return;
  2591.         }
  2592.         private void btnCheck3DXML_Click(object sender, RoutedEventArgs e)
  2593.         {
  2594.             try
  2595.             {
  2596.                 var selectedObject = lstvAttachment.SelectedItems[0] as DataValue;
  2597.                 if (selectedObject == null)
  2598.                 {
  2599.                     return;
  2600.                 }
  2601.                 string strAttachmentName = selectedObject.AttachName;
  2602.                 string strACID = selectedObject.ACId;
  2603.                 string strTempDir = "";
  2604.                 string tagDownloadLocation = AINeCascadeClientConstants.TagSavingDir;
  2605.                 if (AINeCascadeClientUtility.RetreiveTagValueFromSettingFile(tagDownloadLocation, out strTempDir))
  2606.                 {
  2607.                     string strFilePath = System.IO.Path.Combine(strTempDir, strAttachmentName);
  2608.                     if (_myWorker.GetCheckListAttachment(strACID, strAttachmentName, strFilePath))
  2609.                     {
  2610.                         AINeCascadeClientUtility.AddTextToResponse(String.Format("Copied the attachment '{0}' to '{1}'", strAttachmentName, strFilePath));
  2611.                         AINE2ks3dxmlReader oXmlObj = new AINE2ks3dxmlReader(strFilePath);
  2612.                         bool lbResult = false;
  2613.                         string rootName = null;
  2614.                         //Get the Root Product of the 3dxml File
  2615.                         lbResult = oXmlObj.GetRootProduct(out rootName);
  2616.                         //Check if the Root name retrieval is success
  2617.                         if (true == lbResult && rootName != null)
  2618.                         {
  2619.                             List<string> productStructure = new List<string>();
  2620.                             BuildProductStructure(oXmlObj, rootName, ref productStructure);
  2621.                             List<string> kpacZipNames = new List<string>();
  2622.                             string[] allACIDs = null;
  2623.                             // Get the updated Linked AC name
  2624.                             string strLinkedElement = "";
  2625.                             string tagLinkedElement = AINeCascadeClientConstants.TagLinkedElement;
  2626.                             AINeCascadeClientUtility.RetreiveTagValueFromSettingFile(tagLinkedElement, out strLinkedElement);
  2627.                             _myWorker.RetreiveLinkedACNLevel(_sSelectedCoPID, strACID, strLinkedElement, ref allACIDs);
  2628.                             for (int i = 0; i < allACIDs.Length; i++)
  2629.                             {
  2630.                                 int nACId = 0;
  2631.                                 if (int.TryParse(allACIDs[i], out nACId))
  2632.                                 {
  2633.                                     int flagAttachmentForOccurrenceOnly = 0;
  2634.                                     int flagAttachmentsForCheckList = 1;
  2635.                                     Dictionary<string, List<string>> attachmentDetails;
  2636.                                     if (_myWorker.GetCheckListAttachmentNames(nACId, "", "", "", "", out attachmentDetails, flagAttachmentForOccurrenceOnly, flagAttachmentsForCheckList))
  2637.                                    
  2638.                                     {
  2639.                                         foreach (string attachmentName in attachmentDetails.Keys)
  2640.                                         {
  2641.                                             if (attachmentName.IndexOf(".7z") > 0)
  2642.                                             {
  2643.                                                 // Find the minumum limit where the position of "_" wil start cl-X-A_A-B-C-D_YYYYYYYYYY.ZZZ 14 chars
  2644.                                                 int indexOfUnderScore = attachmentName.IndexOf("_", 14);
  2645.                                                 int lengthOfAttachemntName = attachmentName.Length;
  2646.                                                 string attachmentNameMod = attachmentName.Substring
  2647.                                                 (indexOfUnderScore + 1, (lengthOfAttachemntName - (indexOfUnderScore + 1)));
  2648.                                                 kpacZipNames.Add(attachmentNameMod);
  2649.                                             }
  2650.                                         }
  2651.                                     }
  2652.                                     else
  2653.                                     {
  2654.                                         AINeCascadeClientUtility.AddTextToResponse(String.Format(
  2655.                                         "Attachment for Assessment {0} could not be retrieved. Next line contains the error returned by the Server.", nACId));
  2656.                                     }
  2657.                                 }
  2658.                             }
  2659.                             foreach (string productName in productStructure)
  2660.                             {
  2661.                                 if (kpacZipNames.FirstOrDefault(item => item.Contains(productName)) !=
  2662.                                 null)
  2663.                                 {
  2664.                                     AINeCascadeClientUtility.AddTextToResponse(String.Format("Available Product Name: {0}", productName));
  2665.                                 }
  2666.                                 else
  2667.                                 {
  2668.                                     AINeCascadeClientUtility.AddTextToResponse(String.Format("Missing Product Name: {0}", productName));
  2669.                                 }
  2670.                             }
  2671.                         }
  2672.                         else
  2673.                         {
  2674.                             AINeCascadeClientUtility.AddTextToResponse(String.Format("Failed to read 3DXML file: '{0}'", strAttachmentName));
  2675.                         }
  2676.                     }
  2677.                     else
  2678.                     {
  2679.                         AINeCascadeClientUtility.AddTextToResponse(String.Format("Could not retrieve the attachment '{0}'", strAttachmentName));
  2680.                     }
  2681.                 }
  2682.                 else
  2683.                 {
  2684.                     AINeCascadeClientUtility.AddTextToResponse(String.Format("Download location : {0} not found. Please check settings.", tagDownloadLocation));
  2685.                 }
  2686.             }
  2687.             catch
  2688.             {
  2689.                 AINeCascadeClientUtility.AddTextToResponse("Exception caused during 3DXML check.");
  2690.             }
  2691.         }
  2692.         private void btnRemoveAttach_Click(object sender, RoutedEventArgs e)
  2693.         {
  2694.             bool flagAttachRemoved = false;
  2695.             for (int i = 0; i < lstvAttachment.SelectedItems.Count; i++)
  2696.             {
  2697.                 var selectedObject = lstvAttachment.SelectedItems[i] as DataValue;
  2698.                 if (selectedObject == null)
  2699.                 {
  2700.                     return;
  2701.                 }
  2702.                 string strAttachmentType = selectedObject.AttachType;
  2703.                
  2704.                 if (selectedObject.Status == "Saved")
  2705.                 {
  2706.                     if (strAttachmentType == "Link")
  2707.                     {
  2708.                         string strACID = selectedObject.ACId;
  2709.                         string strKpacId = selectedObject.KPacId;
  2710.                         string strUrlValue = selectedObject.AttachName;
  2711.                         string strUrlDesc = selectedObject.AttachDesc;
  2712.                         string strCoPID;
  2713.                         string strOccurrenceId;
  2714.                         string strSubOccurId;
  2715.                         AINeCascadeClientUtility.ParseKPacWithSubOccur(ref strKpacId, out strCoPID, out strOccurrenceId, out strSubOccurId);
  2716.                         string strKPackIdInstName = strCoPID + "-" + strKpacId + "-" + strOccurrenceId + "-" + strSubOccurId;
  2717.                         if (_myWorker.DeleteCheckListUrl(strACID, strKPackIdInstName, strUrlValue, strUrlDesc))
  2718.                         {
  2719.                             AINeCascadeClientUtility.AddTextToResponse(string.Format("'{0}' : Url Removed Successfully from Kpac.", strUrlValue));
  2720.                             flagAttachRemoved = true;
  2721.                         }
  2722.                         else
  2723.                         {
  2724.                             AINeCascadeClientUtility.AddTextToResponse(string.Format("Unexpected error occured removing Url '{0}'.", strUrlValue));
  2725.                         }
  2726.                     }
  2727.                     else if (strAttachmentType == "File")
  2728.                     {
  2729.                         string strAttachmentName = selectedObject.AttachName;
  2730.                         string strKpacId = "";
  2731.                         string strOccurrenceId = "";
  2732.                         string strSubOccurId = "";
  2733.                         string strCoPID = "";
  2734.                         string strACIdToProcess = "";
  2735.                         AINeCascadeClientUtility.ParseAttachmentString(strAttachmentName, out strACIdToProcess, out strKpacId, out strCoPID,
  2736.                         out strOccurrenceId, out strSubOccurId);
  2737.                         string strKPackIdFullName = strCoPID + "-" + strKpacId + "-" + strOccurrenceId +
  2738.                         "-" + strSubOccurId;
  2739.                         if (_myWorker.DeleteCheckListAttachment(strACIdToProcess, strAttachmentName))
  2740.                         {
  2741.                             AINeCascadeClientUtility.AddTextToResponse(string.Format("'{0}' : File Removed Successfully from Kpac.", strAttachmentName));
  2742.                             flagAttachRemoved = true;
  2743.                         }
  2744.                         else
  2745.                         {
  2746.                             AINeCascadeClientUtility.AddTextToResponse(string.Format("Unexpected error occured removing file '{0}'.", strAttachmentName));
  2747.                         }
  2748.                     }
  2749.                 }
  2750.                 else
  2751.                 {
  2752.                     string strAttachmentName = selectedObject.AttachName;
  2753.                     if (strAttachmentName != "")
  2754.                         AINeCascadeClientUtility.AddTextToResponse(String.Format("Unsaved File/Link '{0} ' : Removed Successfully.", strAttachmentName));
  2755.                     lstItems.Remove(selectedObject);
  2756.                     i--;
  2757.                 }
  2758.                
  2759.             }
  2760.             if (flagAttachRemoved)
  2761.             {
  2762.                 btnListAttachment_Click(this, new RoutedEventArgs());
  2763.             }
  2764.         }
  2765.         private void btnSaveAttach_Click(object sender, RoutedEventArgs e)
  2766.         {
  2767.             bool flagSaved = false;
  2768.             Dictionary<string, List<string>> attachmentDetails = new Dictionary<string, List<string>>();
  2769.             bool hasExistingAttachs = false;
  2770.             bool flagYesToAll = false;
  2771.             string fileOrder = "";
  2772.             string strSelACID = cmbACID.SelectedItem.ToString();
  2773.             // Get the linked assessments to the main assessment
  2774.             string strLinkedElement = "";
  2775.             string tagLinkedElement = AINeCascadeClientConstants.TagLinkedElement;
  2776.             string[] arSelectedLinkedACIDs = null;
  2777.             if (AINeCascadeClientUtility.RetreiveTagValueFromSettingFile(tagLinkedElement, out strLinkedElement))
  2778.             {
  2779.                 _myWorker.RetreiveLinkedACNLevel(_sSelectedCoPID, strSelACID, strLinkedElement, ref arSelectedLinkedACIDs);
  2780.             }
  2781.             foreach (var assessment in arSelectedLinkedACIDs.ToList())
  2782.             {
  2783.                 Dictionary<string, List<string>> assessmentAttach = null;
  2784.                 int nACId = 0;
  2785.                 if (int.TryParse(assessment, out nACId))
  2786.                 {
  2787.                     if (_myWorker.GetCheckListAttachmentNames(nACId, "", "", "", "", out assessmentAttach, 0, 1))
  2788.                     {
  2789.                         hasExistingAttachs = true;
  2790.                         foreach (var key in assessmentAttach.Keys)
  2791.                         {
  2792.                             attachmentDetails.Add(key, assessmentAttach[key]);
  2793.                         }
  2794.                     }
  2795.                 }
  2796.             }
  2797.             AINeCascadeClientFileReplaceUI.FileReplaceAction fileReplaceAction =
  2798.             AINeCascadeClientFileReplaceUI.FileReplaceAction.None;
  2799.             // Loop thorugh all the selections to be saved..
  2800.             for (int i = 0; i < lstvAttachment.SelectedItems.Count; i++)
  2801.             {
  2802.                 var selectedObject = lstvAttachment.SelectedItems[i] as DataValue;
  2803.                 if (selectedObject == null)
  2804.                 {
  2805.                     return;
  2806.                 }
  2807.                 string strAttachmentType = selectedObject.AttachType;
  2808.                 ListViewItem row = lstvAttachment.ItemContainerGenerator.ContainerFromIndex(i) as ListViewItem;
  2809.                 if (selectedObject.Status == "Not Saved" && row.Background != Brushes.Red)
  2810.                 {
  2811.                     bool isAttachementEmpty = true;
  2812.                     string strACId = selectedObject.ACId;
  2813.                     string strKpacId = selectedObject.KPacId;
  2814.                     string strAttachName = selectedObject.AttachName;
  2815.                     string strAttachDesc = selectedObject.AttachDesc;
  2816.                     string strCoPID;
  2817.                     string strOccurrenceId;
  2818.                     string strSubOccurId;
  2819.                     AINeCascadeClientUtility.ParseKPacWithSubOccur(ref strKpacId, out strCoPID, out strOccurrenceId, out strSubOccurId);
  2820.                     string strKPackIdFullName = strKpacId + "-" + strOccurrenceId + "-" + strSubOccurId;
  2821.                     string strKPackIdInstName = strCoPID + "-" + strKpacId + "-" + strOccurrenceId + "-"
  2822.                     + strSubOccurId;
  2823.                     if (strAttachmentType == "File")
  2824.                     {
  2825.                         if (strAttachDesc == "")
  2826.                         {
  2827.                             strAttachDesc = " ";
  2828.                         }
  2829.                         string strAttachFileName = System.IO.Path.GetFileName(strAttachName);
  2830.                         string strAttachToDelete = "";
  2831.                         if (hasExistingAttachs)
  2832.                         {
  2833.                             if (attachmentDetails.Keys.Any(det => det.Contains(strKPackIdInstName) &&
  2834.                             det.Contains(strAttachFileName)))
  2835.                             {
  2836.                                 isAttachementEmpty = false;
  2837.                                 strAttachToDelete = attachmentDetails.Keys.First(det => det.Contains
  2838.                                 (strKPackIdInstName) && det.Contains(strAttachFileName));
  2839.                                 if (attachmentDetails.ContainsKey(strAttachToDelete))
  2840.                                 {
  2841.                                     if (attachmentDetails[strAttachToDelete].Count == 2)
  2842.                                     {
  2843.                                         fileOrder = attachmentDetails[strAttachToDelete][1];
  2844.                                     }
  2845.                                 }
  2846.                                 if (!flagYesToAll)
  2847.                                 {
  2848.                                     fileReplaceAction = AINeCascadeClientFileReplaceUI.
  2849.                                     ShowConfirmFileReplace(strAttachFileName, selectedObject.KPacId, selectedObject.ACId);
  2850.                                 }
  2851.                                 if (fileReplaceAction == AINeCascadeClientFileReplaceUI.
  2852.                                 FileReplaceAction.No)
  2853.                                 {
  2854.                                     continue;
  2855.                                 }
  2856.                                 else if (fileReplaceAction == AINeCascadeClientFileReplaceUI.
  2857.                                 FileReplaceAction.NoToAll)
  2858.                                 {
  2859.                                     break;
  2860.                                 }
  2861.                                 else if (fileReplaceAction == AINeCascadeClientFileReplaceUI.
  2862.                                 FileReplaceAction.YesToAll)
  2863.                                 {
  2864.                                     flagYesToAll = true;
  2865.                                 }
  2866.                             }
  2867.                         }
  2868.                         //Remove Existing Attachments
  2869.                         if (fileReplaceAction == AINeCascadeClientFileReplaceUI.FileReplaceAction.Yes ||
  2870.                         (fileReplaceAction == AINeCascadeClientFileReplaceUI.FileReplaceAction.
  2871.                         YesToAll && strAttachToDelete != ""))
  2872.                         {
  2873.                             if (_myWorker.DeleteCheckListAttachment(strACId, strAttachToDelete))
  2874.                             {
  2875.                                 isAttachementEmpty = true;
  2876.                             }
  2877.                         }
  2878.                         //Upload Attachement                        
  2879.                         if (isAttachementEmpty)
  2880.                         {
  2881.                             if (_myWorker.SetCheckListAttachment(strACId, strKPackIdInstName,
  2882.                             strAttachFileName, strAttachDesc, strAttachName, fileOrder))
  2883.                             {
  2884.                                 AINeCascadeClientUtility.AddTextToResponse(String.Format("'{0}' : File Uploaded in KPac: {1} to AC: {2}.", strAttachFileName, strKPackIdInstName, strACId));
  2885.                                 flagSaved = true;
  2886.                             }
  2887.                             else
  2888.                             {
  2889.                                 AINeCascadeClientUtility.AddTextToResponse(String.Format("File {0} Upload To KPac {1} failed as it is not supported.", strAttachFileName, strKPackIdInstName));
  2890.                             }
  2891.                         }
  2892.                     }
  2893.                     else if (strAttachmentType == "Link")
  2894.                     {
  2895.                         if (_myWorker.AddCheckListUrl(strACId, strKPackIdInstName, strAttachName,
  2896.                         strAttachDesc))
  2897.                         {
  2898.                             AINeCascadeClientUtility.AddTextToResponse(String.Format("'{0}' : Url Added in KPac: {1} to AC: {2}.", strAttachName, strKpacId, strACId));
  2899.                             flagSaved = true;
  2900.                         }
  2901.                         else
  2902.                         {
  2903.                             AINeCascadeClientUtility.AddTextToResponse(String.Format(" Url {0} addition To KPac {1} failed due to some reason.", strAttachName, strKpacId));
  2904.                         }
  2905.                     }
  2906.                 }
  2907.             }
  2908.             if (flagSaved)
  2909.             {
  2910.                 btnListAttachment_Click(this, new RoutedEventArgs());
  2911.                 AINeCascadeClientUtility.AddTextToResponse(string.Format("Finished Saving Attachments."));
  2912.                 MessageBox.Show("Finished Saving Attachments.", "Info", MessageBoxButton.OK,
  2913.                 MessageBoxImage.Information);
  2914.             }
  2915.         }
  2916.         //        private bool ParseCSVtoUploadAttach(string strCSVFile)
  2917.         //        {
  2918.         //            bool attachFilesFromCSVData = false;
  2919.         //            string strSeparator = "";
  2920.         //            string TagCSVDelim = AINeCascadeClientConstants.TagCSVDelim;
  2921.         //            AINeCascadeClientUtility.RetreiveTagValueFromSettingFile(TagCSVDelim, out strSeparator);
  2922.         //            string attachHeaderLine = AINeCascadeClientConstants.attachHdrACID + strSeparator +
  2923.         //            AINeCascadeClientConstants.attachHdrKPacId + strSeparator + AINeCascadeClientConstants.attachHdrTitle + strSeparator + AINeCascadeClientConstants.attachHdrFileLinkName +
  2924.         //            strSeparator +
  2925.         //            AINeCascadeClientConstants.attachHdrFileLinkDesc +
  2926.         //            strSeparator +
  2927.         //            AINeCascadeClientConstants.attachHdrType;
  2928.         //            try
  2929.         //            {
  2930.         //                using (StreamReader reader = new StreamReader(strCSVFile))
  2931.         //                {
  2932.         //                    string readLine;
  2933.         //                    while ((readLine = reader.ReadLine()) != null)
  2934.         //                    {
  2935.         //                        if (readLine.Trim() == "")
  2936.         //                        {
  2937.         //                            continue;
  2938.         //                        }
  2939.         //                        
  2940.         //                        else if (readLine.Trim() == attachHeaderLine)
  2941.         //                        {
  2942.         //                            attachFilesFromCSVData = true;
  2943.         //                        }
  2944.         //                        else
  2945.         //                        {
  2946.         //                            if (!attachFilesFromCSVData)
  2947.         //                            {
  2948.         //                                break;
  2949.         //                            }
  2950.         //                            else
  2951.         //                            {
  2952.         //                                string[] splitReadLine = readLine.Split(new string[] { strSeparator },
  2953.         //                                StringSplitOptions.None);
  2954.         //                                if (splitReadLine.Length == 6)
  2955.         //                                {
  2956.         //                                    string strACId = splitReadLine[AINeCascadeClientConstants.csvHdrACIDIdx];
  2957.         //                                    string strKPacId = splitReadLine[AINeCascadeClientConstants.csvHdrKPacIdIdx];
  2958.         //                                    string strKPacTitle = splitReadLine[AINeCascadeClientConstants.csvHdrTitleIdx];
  2959.         //                                    string strAttachName = splitReadLine[AINeCascadeClientConstants.csvHdrFileNameIdx];
  2960.         //                                    string strAttachDesc = splitReadLine[AINeCascadeClientConstants.csvHdrDescIdx];
  2961.         //                                    string strAttachType = splitReadLine[AINeCascadeClientConstants.csvHdrTypeIdx];
  2962.         //                                    if ((strAttachType != "File" || strAttachType != "Link") &&
  2963.         //                                    strAttachName == "" && strKPacId != "" && strACId != "" && strKPacId != "K-PAC Id")
  2964.         //                                        continue;
  2965.         //                                    int nIndxFileItemAdded = -1;
  2966.         //                                    int nIndxUrlItemAdded = -1;
  2967.         //                                    if (strAttachName != "")
  2968.         //                                    {
  2969.         //                                        List<string> subItemsAttachment = new List<string>();
  2970.         //                                        subItemsAttachment.Insert(AINeCascadeClientConstants.csvHdrACIDIdx, strACId);
  2971.         //                                        subItemsAttachment.Insert(AINeCascadeClientConstants.csvHdrKPacIdIdx, strKPacId);
  2972.         //                                        subItemsAttachment.Insert(AINeCascadeClientConstants.csvHdrTitleIdx, strKPacTitle);
  2973.         //                                        subItemsAttachment.Insert(AINeCascadeClientConstants.csvHdrFileNameIdx, strAttachName);
  2974.         //                                        subItemsAttachment.Insert(AINeCascadeClientConstants.csvHdrDescIdx, strAttachDesc);
  2975.         //                                        subItemsAttachment.Insert(5, "Not Saved");
  2976.         //                                        subItemsAttachment.Insert(6, strAttachType);
  2977.         //                                        ListViewItem itmKPac = new ListViewItem(subItemsAttachment.
  2978.         //                                        ToArray());
  2979.         //                                        lstvAttachment.Items.Add(itmKPac);
  2980.         //                                        nIndxFileItemAdded = lstvAttachment.Items.IndexOf(itmKPac);
  2981.         //                                    }
  2982.         //                                    //Color Coding New Items
  2983.         //                                    //Check If AC ID exist
  2984.         //                                    // Get the updated Linked AC name
  2985.         //                                    string strLinkedElement = "";
  2986.         //                                    string tagLinkedElement = AINeCascadeClientConstants.
  2987.         //                                    TagLinkedElement;
  2988.         //                                    string[] arSelectedLinkedACIDs = null;
  2989.         //                                    string strSelACID = cmbACID.SelectedItem.ToString();
  2990.         //                                    if (AINeCascadeClientUtility.RetreiveTagValueFromSettingFile
  2991.         //                                    (tagLinkedElement, out strLinkedElement))
  2992.         //                                    
  2993.         //                                    {
  2994.         //                                        _myWorker.RetreiveLinkedACNLevel(_sSelectedCoPID, strSelACID,
  2995.         //                                        strLinkedElement, ref arSelectedLinkedACIDs);
  2996.         //                                    }
  2997.         //                                    if (!arSelectedLinkedACIDs.Contains(strACId))
  2998.         //                                    {
  2999.         //                                        if (nIndxFileItemAdded != -1)
  3000.         //                                        {
  3001.         //                                            lstvAttachment.Items[nIndxFileItemAdded].BackColor = Colors.
  3002.         //                                            Red;
  3003.         //                                            AINeCascadeClientUtility.AddTextToResponse(String.Format(
  3004.         //                                            "Attachment '{0}' can not be processed as AC '{1}' is not Linked AC.", strAttachName, strACId));
  3005.         //                                        }
  3006.         //                                        continue;
  3007.         //                                    }
  3008.         //                                    //Check if file exist
  3009.         //                                    if (nIndxFileItemAdded != -1 && strAttachType == "File")
  3010.         //                                    {
  3011.         //                                        if (!File.Exists(strAttachName))
  3012.         //                                        {
  3013.         //                                            AINeCascadeClientUtility.AddTextToResponse(String.Format(
  3014.         //                                            "File '{0}' is not accessible.", strAttachName));
  3015.         //                                            lstvAttachment.Items[nIndxFileItemAdded].BackColor = Colors.Red;
  3016.         //                                        }
  3017.         //                                    }
  3018.         //                                    //Check if KPac Exists
  3019.         //                                    bool kPacExist = false;
  3020.         //                                    string strKpacIdn = strKPacId;
  3021.         //                                    string strCoPID = "";
  3022.         //                                    string strOccurrenceId = "";
  3023.         //                                    string strSubOccurId = "";
  3024.         //                                    AINeCascadeClientUtility.ParseKPacWithSubOccur(ref strKpacIdn, out
  3025.         //strCoPID, out strOccurrenceId, out strSubOccurId);
  3026.         //                                    string strKPackFullName = strCoPID + "-" + strKpacIdn + "-" +
  3027.         //                                    strOccurrenceId + "-" + strSubOccurId;
  3028.         //                                    foreach (var assessment in arSelectedLinkedACIDs.ToList())
  3029.         //                                    {
  3030.         //                                        Dictionary<KeyValuePair<string, string>, Dictionary<string,
  3031.         //                                        Dictionary<string, string>>> dicACKPacDetails;
  3032.         //                                        _myWorker.GetAssesmentKPac(_sSelectedCoPID, assessment, out
  3033.         //dicACKPacDetails);
  3034.         //                                        if (dicACKPacDetails.Any(det => det.Key.Key == strCoPID + "-" +
  3035.         //                                        strKpacIdn))
  3036.         //                                        {
  3037.         //                                            var foundKpacId = dicACKPacDetails.First(det => det.Key.Key
  3038.         //                                            == strCoPID + "-" + strKpacIdn);
  3039.         //                                            Dictionary<string, string> subOccAndName;
  3040.         //                                            if (foundKpacId.Value.TryGetValue(strOccurrenceId, out
  3041.         //subOccAndName))
  3042.         //                                            {
  3043.         //                                                string occName;
  3044.         //                                                if (subOccAndName.TryGetValue(strSubOccurId, out
  3045.         //occName))
  3046.         //                                                {
  3047.         //                                                    kPacExist = true;
  3048.         //                                                }
  3049.         //                                            }
  3050.         //                                        }
  3051.         //                                    }
  3052.         //                                    if (!kPacExist)
  3053.         //                                    {
  3054.         //                                        
  3055.         //                                        AINeCascadeClientUtility.AddTextToResponse(String.Format("K-PAC Id {0} does not exist for AC {1}", strKPackFullName, strACId));
  3056.         //                                        if (nIndxFileItemAdded != -1)
  3057.         //                                        {
  3058.         //                                            lstvAttachment.Items[nIndxFileItemAdded].BackColor = Colors.Red;
  3059.         //                                        }
  3060.         //                                        if (nIndxUrlItemAdded != -1)
  3061.         //                                        {
  3062.         //                                            lstvAttachment.Items[nIndxUrlItemAdded].BackColor = Colors.Red;
  3063.         //                                        }
  3064.         //                                    }
  3065.         //                                }
  3066.         //                                else
  3067.         //                                {
  3068.         //                                    AINeCascadeClientUtility.AddTextToResponse(String.Format("Invalid Data In CSV Line : {0}", readLine));
  3069.         //                                }
  3070.         //                            }
  3071.         //                        }
  3072.         //                    }
  3073.         //                }
  3074.         //            }
  3075.         //            catch
  3076.         //            {
  3077.         //                AINeCascadeClientUtility.AddTextToResponse("Exception caused during ParseCSV to Upload Attachment check.");
  3078.         //            }
  3079.         //            return attachFilesFromCSVData;
  3080.         //        }
  3081.         private void btnAddAttach_Click(object sender, RoutedEventArgs e)
  3082.         {
  3083.             try
  3084.             {
  3085.                 // Create new Open File Dialog
  3086.                 OpenFileDialog objOpenFileDialog = new OpenFileDialog();
  3087.                 // Set the Open File Dialog Properties
  3088.                 if (_sLastPathForUpload != "")
  3089.                 {
  3090.                     objOpenFileDialog.InitialDirectory = _sLastPathForUpload;
  3091.                 }
  3092.                 else
  3093.                 {
  3094.                     objOpenFileDialog.InitialDirectory = "c:\\";
  3095.                 }
  3096.                 objOpenFileDialog.Filter = "All files (*.*)|*.*|csv file (*.csv)|*.csv";
  3097.                 if (_nLastUploadFilterIndex != 0)
  3098.                 {
  3099.                     objOpenFileDialog.FilterIndex = _nLastUploadFilterIndex;
  3100.                 }
  3101.                 else
  3102.                 {
  3103.                     objOpenFileDialog.FilterIndex = 1;
  3104.                 }
  3105.                 objOpenFileDialog.RestoreDirectory = true;
  3106.                 objOpenFileDialog.Multiselect = true;
  3107.                 if (objOpenFileDialog.ShowDialog() == true)
  3108.                 {
  3109.                     string[] filesToAdd = objOpenFileDialog.FileNames;
  3110.                     //Set For Next Time
  3111.                     _sLastPathForUpload = System.IO.Path.GetDirectoryName(filesToAdd[0]);                  
  3112.                     _nLastUploadFilterIndex = objOpenFileDialog.FilterIndex;
  3113.                     //string strAttachKPacID = "";
  3114.                     //string strAttachACID = "";
  3115.                     //string strAttachKPacTitle = "";
  3116.                     for (int i = 0; i < filesToAdd.Length; i++)
  3117.                     {
  3118.                         string strAttachmentName = filesToAdd[i];
  3119.                         if (strAttachmentName.IndexOf(".csv") >= 0 || strAttachmentName.IndexOf(".CSV")
  3120.                         >= 0)
  3121.                         {
  3122.                             if (ParseCSVtoUploadAttach(filesToAdd[i]))
  3123.                             {
  3124.                                 continue; //If CSV have specific colum, then parse to Upload attachments else Upload CSV itself
  3125.                             }
  3126.                         }
  3127.                         if (lstvAttachment.SelectedItems.Count == 0)
  3128.                         {
  3129.                             AINeCascadeClientUtility.AddTextToResponse("Kpac Not Selected to upload File");
  3130.                             MessageBox.Show("Kpac Not Selected to upload File", "Info",
  3131.                             MessageBoxButton.OK, MessageBoxImage.Information);
  3132.                             break;
  3133.                         }
  3134.                         var selectedObject = lstvAttachment.SelectedItems[i] as DataValue;
  3135.                         if (selectedObject == null)
  3136.                         {
  3137.                             return;
  3138.                         }
  3139.                         DataValue dataValue = new DataValue();
  3140.                         dataValue.ACId = selectedObject.ACId;
  3141.                         dataValue.KPacId = selectedObject.KPacId;
  3142.                         dataValue.KPacTitle = selectedObject.KPacTitle;
  3143.                         dataValue.AttachName = strAttachmentName;
  3144.                         dataValue.AttachDesc = "";
  3145.                         dataValue.Status = "Not Saved";
  3146.                         dataValue.AttachType = "File";
  3147.                         lstItems.Add(dataValue);
  3148.                     }
  3149.                 }
  3150.             }
  3151.             catch
  3152.             {
  3153.                 AINeCascadeClientUtility.AddTextToResponse("Exception caused during Add files.");
  3154.             }
  3155.         }
  3156.         //private void grbParamOptionsRadio_CheckedChanged(object sender, EventArgs e)
  3157.         //{
  3158.         //    ClearParameterDetails();
  3159.         //    if ((bool)rdbAcExportXml.IsChecked)
  3160.         //    {
  3161.         //        lblParamFile.Content = "Select XML File";
  3162.         //        btnAcExportUpdate.Content = "Export XML";
  3163.         //    }
  3164.         //    else if ((bool)rdbAcImportXml.IsChecked)
  3165.         //    {
  3166.         //        lblParamFile.Content = "Select XML File";
  3167.         //        btnAcExportUpdate.Content = "Save Changes";
  3168.         //    }
  3169.         //    else if ((bool)rdbAcExportCsv.IsChecked)
  3170.         //    {
  3171.         //        lblParamFile.Content = "Select CSV File";
  3172.         //        btnAcExportUpdate.Content = "Export CSV";
  3173.         //    }
  3174.            
  3175.         //    else if ((bool)rdbAcImportCsv.IsChecked)
  3176.         //    {
  3177.         //        lblParamFile.Content = "Select CSV File";
  3178.         //        btnAcExportUpdate.Content = "Save Changes";
  3179.         //    }
  3180.         //    else if ((bool)rdbAcExportHtml.IsChecked)
  3181.         //    {
  3182.         //        lblParamFile.Content = "Select HTML File";
  3183.         //        btnAcExportUpdate.Content = "Show Bookview";
  3184.         //        //btnAcExportUpdate.Enabled = true;
  3185.         //    }
  3186.         //}
  3187.         private bool ShowAssessmentBookView(string outFile)
  3188.         {
  3189.             bool retVal = false;
  3190.             AINeCascadeClientUtility.AddTextToResponse("Exporting to Book View ...");
  3191.             // Get the updated Linked AC name
  3192.             string strLinkedElement = "";
  3193.             string tagLinkedElement = AINeCascadeClientConstants.TagLinkedElement;
  3194.             if (AINeCascadeClientUtility.RetreiveTagValueFromSettingFile(tagLinkedElement, out strLinkedElement))
  3195.             {
  3196.                 string linkerEE = strLinkedElement;
  3197.                 string copID = cmbCoPs.SelectedItem.ToString();
  3198.                 string strSelACID = cmbACID.SelectedItem.ToString();
  3199.                 string strSelProjectId = (cmbProjects.SelectedIndex != -1) ? cmbProjects.SelectedItem.
  3200.                 ToString() : "";
  3201.                 string strSelSubProjectId = (cmbSubProjects.SelectedIndex != -1) ? cmbSubProjects.
  3202.                 SelectedItem.ToString() : "";
  3203.                 string strSelMileStone = (cmbMilestones.SelectedIndex != -1) ? cmbMilestones.
  3204.                 SelectedItem.ToString() : "";
  3205.                 if (_myWorker.ExportAssessmentToXml(_sSelectedCoPID, strSelACID, strSelProjectId,
  3206.                 strSelSubProjectId, strSelMileStone, outFile, linkerEE, true))
  3207.                 {
  3208.                     AINeCascadeClientUtility.AddTextToResponse(string.Format("Finished export eCascade values to BookView xml <file://{0}>", outFile));
  3209.                     MessageBox.Show("Finished export eCascade values to BookView XML.", "Info",
  3210.                     MessageBoxButton.OK, MessageBoxImage.Information);
  3211.                     retVal = true;
  3212.                 }
  3213.                 else
  3214.                 {
  3215.                     AINeCascadeClientUtility.AddTextToResponse(string.Format("Unable to Retrieve Checklist Details of '{0}'. User does not have read or write access to selected AC.", strSelACID));
  3216.                     MessageBox.Show(string.Format("Unable to Retrieve Checklist Details of '{0}'. User does not have read or write access to selected AC.", strSelACID), "Error",
  3217.                     MessageBoxButton.OK, MessageBoxImage.Error);
  3218.                 }
  3219.             }
  3220.             else
  3221.             {
  3222.                 AINeCascadeClientUtility.AddTextToResponse(String.Format("Linked Element {0} attributenot available in settings.", tagLinkedElement));
  3223.             }
  3224.             return retVal;
  3225.         }
  3226.         private bool ExportAssessmentToCSV(string outFile)
  3227.         {
  3228.             bool retVal = false;
  3229.             AINeCascadeClientUtility.AddTextToResponse("Exporting Assessment to CSV...");
  3230.             // Get the updated Linked AC name
  3231.             string strLinkedElement = "";
  3232.             string tagLinkedElement = AINeCascadeClientConstants.TagLinkedElement;
  3233.             if (AINeCascadeClientUtility.RetreiveTagValueFromSettingFile(tagLinkedElement, out strLinkedElement))
  3234.            
  3235.             {
  3236.                 string linkerEE = strLinkedElement;
  3237.                 string strSelACID = cmbACID.SelectedItem.ToString();
  3238.                 ACEExportOptions[] selectedExportOptions = new ACEExportOptions[] { };
  3239.                 if (AINeCascadeClientExportCsvOptionsUI.ShowCsvExportOptions(ref selectedExportOptions) == true)
  3240.                 {
  3241.                     string strSeparator = "";
  3242.                     string TagCSVDelim = AINeCascadeClientConstants.TagCSVDelim;
  3243.                     AINeCascadeClientUtility.RetreiveTagValueFromSettingFile(TagCSVDelim, out strSeparator);
  3244.                     if (_myWorker.ExportCheckListToCSV(_sSelectedCoPID, strSelACID, outFile, strSeparator, linkerEE, selectedExportOptions))
  3245.                     {
  3246.                         AINeCascadeClientUtility.AddTextToResponse(string.Format("Finished export eCascade values to CSV <file://{0}>", outFile));
  3247.                         MessageBox.Show("Finished export eCascade values to CSV.", "Info",
  3248.                         MessageBoxButton.OK, MessageBoxImage.Information);
  3249.                         retVal = true;
  3250.                     }
  3251.                     else
  3252.                     {
  3253.                         AINeCascadeClientUtility.AddTextToResponse(string.Format("Unable to Retrieve Checklist Details of '{0}'. User might not have read or write access to selected AC or Linked AC.Please check if the exported file is not open by another process.", strSelACID));
  3254.                         MessageBox.Show(string.Format("Unable to Retrieve Checklist Details of '{0}'.User might not have read or write access to selected AC or Linked AC. Please check if the exported file is not open by another process.", strSelACID), "Error", MessageBoxButton.OK, MessageBoxImage.Error);
  3255.                     }
  3256.                 }
  3257.             }
  3258.             else
  3259.             {
  3260.                 AINeCascadeClientUtility.AddTextToResponse(String.Format("Linked Element {0} attribute not available in settings.", tagLinkedElement));
  3261.             }
  3262.             return retVal;
  3263.         }
  3264.         private bool ExportAssessmentToXML(string outFile)
  3265.         {
  3266.             bool retVal = false;
  3267.             AINeCascadeClientUtility.AddTextToResponse("Exporting Assessment to XML...");
  3268.             // Get the updated Linked AC name
  3269.             string strLinkedElement = "";
  3270.             string tagLinkedElement = AINeCascadeClientConstants.TagLinkedElement;
  3271.             if (AINeCascadeClientUtility.RetreiveTagValueFromSettingFile(tagLinkedElement, out strLinkedElement))
  3272.             {
  3273.                 string linkerEE = strLinkedElement;
  3274.                 string strSelACID = cmbACID.SelectedItem.ToString();
  3275.                 int flagGenerateForLinkedAC = 1;
  3276.                 if (_myWorker.ExportCheckListToXml(strSelACID, outFile, linkerEE,
  3277.                 flagGenerateForLinkedAC))
  3278.                 {
  3279.                     AINeCascadeClientUtility.AddTextToResponse(string.Format("Finished export e2ks values to XML <file://{0}>", outFile));
  3280.                     MessageBox.Show("Finished export e2ks values to XML.", "Info", MessageBoxButton.OK,
  3281.                     MessageBoxImage.Information);
  3282.                     retVal = true;
  3283.                 }
  3284.                 else
  3285.                 {
  3286.                     AINeCascadeClientUtility.AddTextToResponse(string.Format("Unable to Retrieve Checklist Details of '{0}'. User does not have read or write access to selected AC.", strSelACID));
  3287.                    
  3288.                     MessageBox.Show(string.Format("Unable to Retrieve Checklist Details of '{0}'. User does not have read or write access to selected AC.", strSelACID), "Error",
  3289.                     MessageBoxButton.OK, MessageBoxImage.Error);
  3290.                 }
  3291.             }
  3292.             else
  3293.             {
  3294.                 AINeCascadeClientUtility.AddTextToResponse(String.Format("Linked Element {0} attribute not available in settings.", tagLinkedElement));
  3295.             }
  3296.             return retVal;
  3297.         }
  3298.         private void btnSelParamFile_Click(object sender, RoutedEventArgs e)
  3299.         {
  3300.             // Create new Open File Dialog
  3301.             OpenFileDialog objOpenFileDialog = new OpenFileDialog();
  3302.             // Set the Open File Dialog Properties
  3303.             if (rdbAcExportXml.IsChecked == true || rdbAcImportXml.IsChecked == true || rdbAcExportHtml.IsChecked == true)
  3304.                 objOpenFileDialog.Filter = "xml files (*.*)|*.xml*";
  3305.             else if (rdbAcExportCsv.IsChecked == true || rdbAcImportCsv.IsChecked == true)
  3306.                 objOpenFileDialog.Filter = "csv file (*.csv)|*.csv";
  3307.             objOpenFileDialog.FilterIndex = 2;
  3308.             objOpenFileDialog.RestoreDirectory = true;
  3309.             if (rdbAcExportXml.IsChecked == true || rdbAcExportCsv.IsChecked == true || rdbAcExportHtml.IsChecked == true)
  3310.             {
  3311.                 objOpenFileDialog.CheckFileExists = false;
  3312.             }
  3313.             objOpenFileDialog.Multiselect = false;
  3314.             if (objOpenFileDialog.ShowDialog() == true)
  3315.             {
  3316.                 string selParamFile = objOpenFileDialog.FileName;
  3317.                 if (rdbAcExportXml.IsChecked == true || rdbAcExportHtml.IsChecked == true)
  3318.                 {
  3319.                     if ((!selParamFile.Contains(".xml")) && (!selParamFile.Contains(".XML")))
  3320.                     {
  3321.                         selParamFile = selParamFile + ".xml";
  3322.                     }
  3323.                     btnAcExportUpdate.IsEnabled = true;
  3324.                 }
  3325.                 else if (rdbAcExportCsv.IsChecked == true)
  3326.                 {
  3327.                     if ((!selParamFile.Contains(".csv")) && (!selParamFile.Contains(".CSV")))
  3328.                     {
  3329.                         selParamFile = selParamFile + ".csv";
  3330.                     }
  3331.                     btnAcExportUpdate.IsEnabled = true;
  3332.                 }
  3333.                 if (rdbAcImportXml.IsChecked == true)
  3334.                 {
  3335.                     AnalyzeXmlData(selParamFile);
  3336.                 }
  3337.                 if (rdbAcImportCsv.IsChecked == true)
  3338.                 {
  3339.                     AnalyzeCSVData(selParamFile);
  3340.                 }
  3341.                 txtParamFilePath.Text = selParamFile;
  3342.             }
  3343.         }
  3344.         private bool FillParamListViewWithParameters(Dictionary<KeyValuePair<string, string>,Dictionary <string, List<string>>> compareResults)
  3345.         {
  3346.             lstvParamDisplay.Items.Clear();
  3347.             lstParamDisplay.Clear();
  3348.             //lstvParamDisplay.Columns.Clear();
  3349.             bool paramDisplayHeaderDone = false;
  3350.             foreach (var acIdKpacId in compareResults.Keys)
  3351.             {
  3352.                 if (!paramDisplayHeaderDone)
  3353.                 {
  3354.                     //lstvParamDisplay.View = View.Details;
  3355.                     GridViewColumn column = new GridViewColumn();
  3356.                     column.Header = "S.No";
  3357.                     column.DisplayMemberBinding = new Binding("SNo");
  3358.                     grdvParamDisplay.Columns.Add(column);
  3359.  
  3360.                     column = new GridViewColumn();
  3361.                     column.Header = "AC ID";
  3362.                     column.DisplayMemberBinding = new Binding("ACId");
  3363.                     grdvParamDisplay.Columns.Add(column);
  3364.  
  3365.                     column = new GridViewColumn();
  3366.                     column.Header = "K-PAC Id";
  3367.                     column.DisplayMemberBinding = new Binding("KPacId");
  3368.                     grdvParamDisplay.Columns.Add(column);
  3369.  
  3370.                     column = new GridViewColumn();
  3371.                     column.Header = "Parameter Name";
  3372.                     column.DisplayMemberBinding = new Binding("ParameterName");
  3373.                     grdvParamDisplay.Columns.Add(column);
  3374.  
  3375.                     column = new GridViewColumn();
  3376.                     column.Header = "Reported Value - New Value";
  3377.                     column.DisplayMemberBinding = new Binding("ReportedValueNewValue");
  3378.                     grdvParamDisplay.Columns.Add(column);
  3379.  
  3380.                     column = new GridViewColumn();
  3381.                     column.Header = "Reported Value - E2KS Value";
  3382.                     column.DisplayMemberBinding = new Binding("ReportedValueE2KSValue");
  3383.                     grdvParamDisplay.Columns.Add(column);
  3384.  
  3385.                     column = new GridViewColumn();
  3386.                     column.Header = "Target Value - New Value";
  3387.                     column.DisplayMemberBinding = new Binding("TargetValueNewValue");
  3388.                     grdvParamDisplay.Columns.Add(column);
  3389.  
  3390.                     column = new GridViewColumn();
  3391.                     column.Header = "Target Value - E2KS Value";
  3392.                     column.DisplayMemberBinding = new Binding("TargetValueE2KSValue");
  3393.                     grdvParamDisplay.Columns.Add(column);
  3394.  
  3395.                     paramDisplayHeaderDone = true;
  3396.                 }
  3397.  
  3398.                 int i = 0;
  3399.                 foreach (string paramName in compareResults[acIdKpacId].Keys)
  3400.                 {
  3401.                     ParametersAndAssessments data = new ParametersAndAssessments();
  3402.                     data.SNo = (i++).ToString();
  3403.                     data.ACId = acIdKpacId.Key;
  3404.                     data.KPacId = acIdKpacId.Value;
  3405.                     data.ParameterName = paramName;
  3406.                     data.ReportedValueNewValue = compareResults[acIdKpacId][paramName][0];
  3407.                     data.ReportedValueE2KSValue = compareResults[acIdKpacId][paramName][1];
  3408.                     data.TargetValueNewValue = compareResults[acIdKpacId][paramName][2];
  3409.                     data.TargetValueE2KSValue = compareResults[acIdKpacId][paramName][3];
  3410.                     lstParamDisplay.Add(data);
  3411.  
  3412.                 }
  3413.  
  3414.                 lstvParamDisplay.ItemsSource = lstParamDisplay;
  3415.  
  3416.             }
  3417.             return paramDisplayHeaderDone;
  3418.         }
  3419.         private bool FillParamListViewWithAcSe(bool hasParamResults, Dictionary<KeyValuePair<string, string>, Dictionary<string, List<string>>> compareResults)
  3420.         {
  3421.             GridViewColumn column = new GridViewColumn();
  3422.             if (!hasParamResults)
  3423.             {
  3424.                 grdvParamDisplay.Columns.Clear();
  3425.                 lstvParamDisplay.Items.Clear();
  3426.  
  3427.                 column.Header = "S.No";
  3428.                 column.DisplayMemberBinding = new Binding("SNo");
  3429.                 grdvParamDisplay.Columns.Add(column);
  3430.  
  3431.                 column = new GridViewColumn();
  3432.                 column.Header = "AC ID";
  3433.                 column.DisplayMemberBinding = new Binding("ACId");
  3434.                 grdvParamDisplay.Columns.Add(column);
  3435.  
  3436.                 column = new GridViewColumn();
  3437.                 column.Header = "K-PAC Id";
  3438.                 column.DisplayMemberBinding = new Binding("KPacId");
  3439.                 grdvParamDisplay.Columns.Add(column);
  3440.  
  3441.                 //lstvParamDisplay.View = View.Details;
  3442.                 //lstvParamDisplay.Columns.Add("S.No", -2, HorizontalAlignment.Left);
  3443.                 //lstvParamDisplay.Columns.Add("AC ID", -2, HorizontalAlignment.Left);
  3444.                 //lstvParamDisplay.Columns.Add("K-PAC Id", -2, HorizontalAlignment.Left);
  3445.                 //lstvParamDisplay.AutoResizeColumn(0, ColumnHeaderAutoResizeStyle.HeaderSize);
  3446.                 //lstvParamDisplay.AutoResizeColumn(1, ColumnHeaderAutoResizeStyle.HeaderSize);
  3447.  
  3448.                 //lstvParamDisplay.AutoResizeColumn(2, ColumnHeaderAutoResizeStyle.HeaderSize);
  3449.             }
  3450.             if (!hasParamResults)
  3451.             {
  3452.                 int i = 0;
  3453.                 bool acSeDisplayHeaderDone = false;
  3454.                 foreach (var acIdKpacId in compareResults.Keys)
  3455.                 {
  3456.                     ParametersAndAssessments data = new ParametersAndAssessments();
  3457.                     data.SNo = (i++).ToString();
  3458.                     data.ACId = acIdKpacId.Key;
  3459.                     data.KPacId = acIdKpacId.Value;
  3460.                     //data.ParameterName = paramName;
  3461.  
  3462.  
  3463.  
  3464.                     //ListViewItem rowVal = new ListViewItem((lstvParamDisplay.Items.Count + 1).ToString(), 0);
  3465.                     //rowVal.SubItems.Add(acIdKpacId.Key);
  3466.                     //rowVal.SubItems.Add(acIdKpacId.Value);
  3467.                     foreach (string acSeName in compareResults[acIdKpacId].Keys)
  3468.                     {
  3469.                         //data.ReportedValueNewValue = compareResults[acIdKpacId][paramName][0];
  3470.                         //data.ReportedValueE2KSValue = compareResults[acIdKpacId][paramName][1];
  3471.                         //data.TargetValueNewValue = compareResults[acIdKpacId][paramName][2];
  3472.                         //data.TargetValueE2KSValue = compareResults[acIdKpacId][paramName][3];
  3473.                         //lstParamDisplay.Add(data);
  3474.  
  3475.                         if (!acSeDisplayHeaderDone)
  3476.                         {
  3477.                             column = new GridViewColumn();
  3478.                             column.Header = acSeName + " - New Value";
  3479.                             column.DisplayMemberBinding = new Binding("ReportedValueNewValue");
  3480.                             grdvParamDisplay.Columns.Add(column);
  3481.  
  3482.                             column = new GridViewColumn();
  3483.                             column.Header = acSeName + " - E2KS Value";
  3484.                             column.DisplayMemberBinding = new Binding("ReportedValueE2KSValue");
  3485.                             grdvParamDisplay.Columns.Add(column);
  3486.  
  3487.                             //lstvParamDisplay.Columns.Add(acSeName + " - New Value", -2, HorizontalAlignment.Left);
  3488.                             //lstvParamDisplay.AutoResizeColumn(lstvParamDisplay.Columns.Count - 1, ColumnHeaderAutoResizeStyle.HeaderSize);
  3489.                             //lstvParamDisplay.Columns.Add(acSeName + " - E2KS Value", -2, HorizontalAlignment.Left);
  3490.                             //lstvParamDisplay.AutoResizeColumn(lstvParamDisplay.Columns.Count - 1, ColumnHeaderAutoResizeStyle.HeaderSize);
  3491.                         }
  3492.                         data.ReportedValueNewValue = compareResults[acIdKpacId][acSeName][0];
  3493.                         data.ReportedValueE2KSValue = compareResults[acIdKpacId][acSeName][1];
  3494.                         lstParamDisplay.Add(data);
  3495.                         //rowVal.SubItems.Add(compareResults[acIdKpacId][acSeName][0]);
  3496.                         //rowVal.SubItems.Add(compareResults[acIdKpacId][acSeName][1]);
  3497.                     }
  3498.                     acSeDisplayHeaderDone = true;
  3499.                     //lstvParamDisplay.Items.Add(rowVal);
  3500.                 }
  3501.             }
  3502.             else
  3503.             {
  3504.                 bool acSeDisplayHeaderDone = false;
  3505.                 foreach (var acIdKpacId in compareResults.Keys)
  3506.                 {
  3507.                     int indxExistingAcIdKpacId = -1;
  3508.                     for (int i = 0; i < lstvParamDisplay.Items.Count; i++)
  3509.                     {
  3510.                         var selectedObject = lstvParamDisplay.SelectedItems[i] as ParametersAndAssessments;
  3511.                         if (selectedObject == null)
  3512.                         {
  3513.                             break;
  3514.                         }
  3515.                         if (acIdKpacId.Key == selectedObject.ACId && acIdKpacId.Value == selectedObject.KPacId)
  3516.                         {
  3517.                             indxExistingAcIdKpacId = i;
  3518.                             break;
  3519.                         }
  3520.                     }
  3521.                     if (indxExistingAcIdKpacId != -1)
  3522.                     {
  3523.                         foreach (string acSeName in compareResults[acIdKpacId].Keys)
  3524.                         {
  3525.                             if (!acSeDisplayHeaderDone)
  3526.                             {
  3527.                                 column = new GridViewColumn();
  3528.                                 column.Header = acSeName + " - New Value";
  3529.                                 column.DisplayMemberBinding = new Binding("ReportedValueNewValue");
  3530.                                 grdvParamDisplay.Columns.Add(column);
  3531.  
  3532.                                 column = new GridViewColumn();
  3533.                                 column.Header = acSeName + " - E2KS Value";
  3534.                                 column.DisplayMemberBinding = new Binding("ReportedValueE2KSValue");
  3535.                                 grdvParamDisplay.Columns.Add(column);
  3536.  
  3537.                                 //lstvParamDisplay.Columns.Add(acSeName + " - New Value", -2, HorizontalAlignment.Left);
  3538.                                 //lstvParamDisplay.AutoResizeColumn(lstvParamDisplay.Columns.Count - 1, ColumnHeaderAutoResizeStyle.HeaderSize);
  3539.                                 //lstvParamDisplay.Columns.Add(acSeName + " - E2KS Value", -2, HorizontalAlignment.Left);
  3540.                                 //lstvParamDisplay.AutoResizeColumn(lstvParamDisplay.Columns.Count - 1, ColumnHeaderAutoResizeStyle.HeaderSize);
  3541.                             }
  3542.                             ParametersAndAssessments data = new ParametersAndAssessments();
  3543.                             data.ReportedValueNewValue = compareResults[acIdKpacId][acSeName][0];
  3544.                             data.ReportedValueE2KSValue = compareResults[acIdKpacId][acSeName][1];
  3545.                             lstParamDisplay.Add(data);
  3546.  
  3547.                             //lstvParamDisplay.Items[indxExistingAcIdKpacId].SubItems.Add(compareResults[acIdKpacId][acSeName][0]);
  3548.                             //lstvParamDisplay.Items[indxExistingAcIdKpacId].SubItems.Add(compareResults [acIdKpacId][acSeName][1]);
  3549.                         }
  3550.  
  3551.                         acSeDisplayHeaderDone = true;
  3552.                     }
  3553.                     else
  3554.                     {
  3555.                         ParametersAndAssessments data = new ParametersAndAssessments();
  3556.                         data.SNo = (lstParamDisplay.Count() + 1).ToString();
  3557.                         data.ACId = acIdKpacId.Key;
  3558.                         data.KPacId = acIdKpacId.Value;
  3559.                         data.ReportedValueNewValue = "-";
  3560.                         data.ReportedValueE2KSValue = "-";
  3561.                         data.TargetValueE2KSValue = "-";
  3562.                         data.TargetValueNewValue = "-";
  3563.                         data.ParameterName = "-";
  3564.  
  3565.                         //ListViewItem rowVal = new ListViewItem((lstvParamDisplay.Items.Count + 1).ToString(), 0);
  3566.                         //rowVal.SubItems.Add(acIdKpacId.Key);
  3567.                         //rowVal.SubItems.Add(acIdKpacId.Value);
  3568.                         //rowVal.SubItems.Add("-");
  3569.                         //rowVal.SubItems.Add("-");
  3570.                         //rowVal.SubItems.Add("-");
  3571.                         //rowVal.SubItems.Add("-");
  3572.                         //rowVal.SubItems.Add("-");
  3573.                         foreach (string acSeName in compareResults[acIdKpacId].Keys)
  3574.                         {
  3575.                             if (!acSeDisplayHeaderDone)
  3576.                             {
  3577.                                 column = new GridViewColumn();
  3578.                                 column.Header = acSeName + " - New Value";
  3579.                                 column.DisplayMemberBinding = new Binding("ReportedValueNewValue");
  3580.                                 grdvParamDisplay.Columns.Add(column);
  3581.  
  3582.                                 column = new GridViewColumn();
  3583.                                 column.Header = acSeName + " - E2KS Value";
  3584.                                 column.DisplayMemberBinding = new Binding("ReportedValueE2KSValue");
  3585.                                 grdvParamDisplay.Columns.Add(column);
  3586.  
  3587.                                 //lstvParamDisplay.Columns.Add(acSeName + " - New Value", -2, HorizontalAlignment.Left);
  3588.                                 //lstvParamDisplay.AutoResizeColumn(lstvParamDisplay.Columns.Count - 1,
  3589.                                 //ColumnHeaderAutoResizeStyle.HeaderSize);
  3590.                                 //lstvParamDisplay.Columns.Add(acSeName + " - E2KS Value", -2,
  3591.                                 //HorizontalAlignment.Left);
  3592.                                 //lstvParamDisplay.AutoResizeColumn(lstvParamDisplay.Columns.Count - 1,
  3593.                                 //ColumnHeaderAutoResizeStyle.HeaderSize);
  3594.                             }
  3595.                             data.ReportedValueE2KSValue = compareResults[acIdKpacId][acSeName][0];
  3596.                             data.TargetValueE2KSValue = compareResults[acIdKpacId][acSeName][1];
  3597.                         }
  3598.                         acSeDisplayHeaderDone = true;
  3599.                         //lstvParamDisplay.Items.Add(rowVal);
  3600.                         lstParamDisplay.Add(data);
  3601.                     }
  3602.                 }
  3603.             }
  3604.             return true;
  3605.         }
  3606.         private bool AnalyzeCSVData(string csvFile)
  3607.         {
  3608.             string strSelACID = cmbACID.SelectedItem.ToString();
  3609.             Dictionary<KeyValuePair<string, string>, Dictionary<string, List<string>>>
  3610.             paramsCompareResults;
  3611.             Dictionary<KeyValuePair<string, string>, Dictionary<string, List<string>>>
  3612.             acSeCompareResults;
  3613.             bool hasParamResults = false;
  3614.             // Get the updated Linked AC name
  3615.             string strLinkedElement = "";
  3616.             string tagLinkedElement = AINeCascadeClientConstants.TagLinkedElement;
  3617.             if (AINeCascadeClientUtility.RetreiveTagValueFromSettingFile(tagLinkedElement, out strLinkedElement))
  3618.             {
  3619.                 string strSeparator = "";
  3620.                 string TagCSVDelim = AINeCascadeClientConstants.TagCSVDelim;
  3621.                 AINeCascadeClientUtility.RetreiveTagValueFromSettingFile(TagCSVDelim, out strSeparator);
  3622.                 if (_myWorker.AnalyzeCSVAndAssesmentParameters(csvFile, _sSelectedCoPID, strSelACID,
  3623.                 strSeparator, strLinkedElement, out paramsCompareResults, out acSeCompareResults))
  3624.                 {
  3625.                     AINeCascadeClientUtility.AddTextToResponse("Finished Analyzing csv and eCascade Database values");
  3626.                     if (paramsCompareResults != null)
  3627.                     {
  3628.                         hasParamResults = FillParamListViewWithParameters(paramsCompareResults);
  3629.                     }
  3630.                     if (acSeCompareResults != null)                  
  3631.                     {
  3632.                         FillParamListViewWithAcSe(hasParamResults, acSeCompareResults);
  3633.                     }
  3634.                     MessageBox.Show("Finished Analyzing csv and eCascade database values. \n Check List for Differences Found", "Info", MessageBoxButton.OK, MessageBoxImage.Information);
  3635.                 }
  3636.                 else
  3637.                 {
  3638.                     AINeCascadeClientUtility.AddTextToResponse("Finished Analyzing csv and eCascade database values. \n No Differences Found");
  3639.                     MessageBox.Show("Finished Analyzing csv and eCascade database values. \n No Differences Found", "Info",
  3640.                     MessageBoxButton.OK, MessageBoxImage.Information);
  3641.                 }
  3642.             }