muhamadramandani095

pic-gigi-seri-cs

Sep 3rd, 2020
780
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. using Medifirst2000.Framework.Converter;
  2. using Medifirst2000.MainMenu.ViewModel;
  3. using System;
  4. using System.Collections.Generic;
  5. using System.Linq;
  6. using System.Reflection;
  7. using System.Text;
  8. using System.Threading.Tasks;
  9. using System.Windows;
  10. using System.Windows.Controls;
  11. using System.Windows.Data;
  12. using System.Windows.Documents;
  13. using System.Windows.Input;
  14. using System.Windows.Media;
  15. using System.Windows.Media.Imaging;
  16. using System.Windows.Navigation;
  17. using System.Windows.Shapes;
  18.  
  19. namespace Medifirst2000.MainMenu
  20. {
  21.     /// <summary>
  22.     /// Interaction logic for PicGigiSeri.xaml
  23.     /// </summary>
  24.     public partial class PicGigiSeri : UserControl
  25.     {
  26.         public OdontoDetailViewModel Context { get => DataContext as OdontoDetailViewModel; }
  27.         public PicGigiSeri()
  28.         {
  29.             InitializeComponent();
  30.             MouseLeftButtonUp += PicGigiTaringMouseLeftButtonUp;
  31.             PAtas.MouseLeftButtonUp += PAtasMouseLeftButtonUp;
  32.             PBawah.MouseLeftButtonUp += PBawahMouseLeftButtonUp;
  33.             PKiri.MouseLeftButtonUp += PKiriMouseLeftButtonUp;
  34.             PKanan.MouseLeftButtonUp += PKananMouseLeftButtonUp;
  35.         }
  36.  
  37.         public void SetDataOdonto(OdontoDetailViewModel odonto)
  38.         {
  39.             var properties = odonto.GetType().GetProperties().Where(n => n.PropertyType == typeof(bool));
  40.             foreach (var properti in properties)
  41.             {
  42.                 var ya = Convert.ToBoolean(properti.GetValue(odonto));
  43.                 if (ya)
  44.                 {
  45.                     switch (properti.Name)
  46.                     {
  47.                         case "KavitasKiri":
  48.                         case "KavitasKanan":
  49.                         case "KavitasAtas":
  50.                         case "KavitasBawah":
  51.                         case "KavitasTengah":
  52.                             CurrentSymbolOdonto.Current = SymbolOdonto.Kavitas;
  53.                             break;
  54.                         case "TambalanKiri":
  55.                         case "TambalanKanan":
  56.                         case "TambalanAtas":
  57.                         case "TambalanBawah":
  58.                         case "TambalanTengah":
  59.                             CurrentSymbolOdonto.Current = SymbolOdonto.Tambalan;
  60.                             break;
  61.                         case "Tidak Ada":
  62.                             CurrentSymbolOdonto.Current = SymbolOdonto.TidakAda;
  63.                             break;
  64.                         case "Pulpitis":
  65.                             CurrentSymbolOdonto.Current = SymbolOdonto.Pulpitis;
  66.                             break;
  67.                         case "Ganggren Pulpae":
  68.                             CurrentSymbolOdonto.Current = SymbolOdonto.GanggrenPurpae;
  69.                             break;
  70.                         case "Radix":
  71.                             CurrentSymbolOdonto.Current = SymbolOdonto.Radix;
  72.                             break;
  73.                         case "Granuloom":
  74.                             CurrentSymbolOdonto.Current = SymbolOdonto.Granuloom;
  75.                             break;
  76.                         case "Kyste":
  77.                             CurrentSymbolOdonto.Current = SymbolOdonto.Kyste;
  78.                             break;
  79.                         case "Pyorrhoe":
  80.                             CurrentSymbolOdonto.Current = SymbolOdonto.Pyorrhoe;
  81.                             break;
  82.                         case "Karies Media":
  83.                             CurrentSymbolOdonto.Current = SymbolOdonto.KariesMedia;
  84.                             break;
  85.                         case "Karsinoma":
  86.                             CurrentSymbolOdonto.Current = SymbolOdonto.Karsinoma;
  87.                             break;
  88.                     }
  89.  
  90.                     var findSymbolPolygon = GridPola.Children.OfType<Polygon>().FirstOrDefault(n => CurrentSymbolOdonto.Current + "" + n.Tag.ToString() == properti.Name);
  91.                     if (findSymbolPolygon != null)
  92.                     {
  93.                         CreateBlok(findSymbolPolygon);
  94.                         return;
  95.                     }
  96.  
  97.                     var findSymbolHuruf = WpSymbol.Children.OfType<TextBlock>().FirstOrDefault(n => n.Tag.ToString() == properti.Name);
  98.                     if (findSymbolHuruf != null)
  99.                     {
  100.                         SetVisibilityText(findSymbolHuruf);
  101.                         return;
  102.                     }
  103.  
  104.                     var findSymbolViewboxWpSymbol = WpSymbol.Children.OfType<Viewbox>().FirstOrDefault(n => n.Tag.ToString() == properti.Name);
  105.                     if (findSymbolViewboxWpSymbol != null)
  106.                     {
  107.                         SetVisibilityView(findSymbolViewboxWpSymbol);
  108.                         return;
  109.                     }
  110.  
  111.                     if (SymTidakAda.Tag.ToString() == properti.Name)
  112.                     {
  113.                         SetVisibilityText(SymTidakAda);
  114.                     }                    
  115.                 }
  116.             }
  117.         }
  118.  
  119.         public void Clear()
  120.         {
  121.             foreach (var pola in GridPola.Children.OfType<Polygon>())
  122.             {
  123.                 Clear(pola);
  124.             }
  125.  
  126.             foreach (var text in WpSymbol.Children.OfType<TextBlock>())
  127.             {
  128.                 Clear(text);
  129.             }
  130.  
  131.             foreach (var viewBox in WpSymbol.Children.OfType<Viewbox>())
  132.             {
  133.                 Clear(viewBox);
  134.             }
  135.  
  136.             Clear(SymTidakAda);
  137.         }
  138.  
  139.         private void Clear(Viewbox viewBox)
  140.         {
  141.             viewBox.Visibility = Visibility.Collapsed;
  142.         }
  143.  
  144.         private void Clear(TextBlock textBlock)
  145.         {
  146.             textBlock.Visibility = Visibility.Collapsed;
  147.         }
  148.  
  149.         private void Clear(Polygon polygon)
  150.         {
  151.             polygon.StrokeThickness = 1;
  152.             polygon.Fill = new SolidColorBrush(Colors.White);
  153.         }
  154.  
  155.         private void PKananMouseLeftButtonUp(object sender, MouseButtonEventArgs e)
  156.         {
  157.             CreateBlok(sender);
  158.         }
  159.  
  160.         private void PKiriMouseLeftButtonUp(object sender, MouseButtonEventArgs e)
  161.         {
  162.             CreateBlok(sender);
  163.         }
  164.  
  165.         private void PBawahMouseLeftButtonUp(object sender, MouseButtonEventArgs e)
  166.         {
  167.             CreateBlok(sender);
  168.         }
  169.  
  170.         private void PAtasMouseLeftButtonUp(object sender, MouseButtonEventArgs e)
  171.         {
  172.             CreateBlok(sender);
  173.         }
  174.  
  175.         private void CreateBlok(object sender)
  176.         {
  177.             var blok = sender as Polygon;
  178.             switch (CurrentSymbolOdonto.Current)
  179.             {
  180.                 case SymbolOdonto.Kavitas:
  181.                     SetKavitas(blok);
  182.                     break;
  183.                 case SymbolOdonto.Tambalan:
  184.                     SetTambalan(blok);
  185.                     break;
  186.             }
  187.         }
  188.  
  189.         private void SetKavitas(Polygon blok)
  190.         {
  191.             var joinTag = CurrentSymbolOdonto.Current + blok.Tag.ToString();
  192.             var properti = Context.GetType().GetProperty(joinTag);
  193.             if (properti != null)
  194.             {
  195.                 var propertySummary = Context.GetType().GetProperty("Summary");
  196.                 var summary = propertySummary.GetValue(Context)?.ToString();
  197.                 if (blok.StrokeThickness == 1)
  198.                 {
  199.                     blok.StrokeThickness = 3;
  200.                     summary = SetSummary(joinTag, properti, summary);
  201.                 }
  202.                 else
  203.                 {
  204.                     blok.StrokeThickness = 1;
  205.                     summary = ReplaceSummary(joinTag, properti, summary);
  206.                 }
  207.                 propertySummary.SetValue(Context, summary);
  208.             }
  209.         }
  210.  
  211.         private string ReplaceSummary(string tag, PropertyInfo properti, string summary)
  212.         {
  213.             properti.SetValue(Context, false);
  214.             if (string.IsNullOrEmpty(summary))
  215.                 summary = summary.Replace(tag.ToSentence(), "");
  216.             else
  217.             {
  218.                 if (summary.Contains("-" + tag.ToSentence()))
  219.                     summary = summary.Replace("-" + tag.ToSentence(), "");
  220.                 else
  221.                     summary = summary.Replace(tag.ToSentence(), "");
  222.             }
  223.             return summary;
  224.         }
  225.  
  226.         private string SetSummary(string tag, PropertyInfo properti, string summary)
  227.         {
  228.             properti.SetValue(Context, true);
  229.             if (string.IsNullOrEmpty(summary))
  230.                 summary += tag.ToSentence();
  231.             else
  232.                 summary += "-" + tag.ToSentence();
  233.             return summary;
  234.         }
  235.  
  236.         private void SetTambalan(Polygon blok)
  237.         {
  238.             var joinTag = CurrentSymbolOdonto.Current + blok.Tag.ToString();
  239.             var properti = Context.GetType().GetProperty(joinTag);
  240.             if (properti != null)
  241.             {
  242.                 var propertySummary = Context.GetType().GetProperty("Summary");
  243.                 var summary = propertySummary.GetValue(Context)?.ToString();
  244.                 var getColor = blok.Fill as SolidColorBrush;
  245.                 if (Colors.White.Equals(getColor.Color))
  246.                 {
  247.                     blok.Fill = new SolidColorBrush(Colors.Gray);
  248.                     summary = SetSummary(joinTag, properti, summary);
  249.                 }
  250.                 else
  251.                 {
  252.                     blok.Fill = new SolidColorBrush(Colors.White);
  253.                     summary = ReplaceSummary(joinTag, properti, summary);
  254.                 }
  255.                 propertySummary.SetValue(Context, summary);
  256.             }
  257.  
  258.         }
  259.  
  260.         private void PicGigiTaringMouseLeftButtonUp(object sender, MouseButtonEventArgs e)
  261.         {
  262.             switch (CurrentSymbolOdonto.Current)
  263.             {
  264.                 case SymbolOdonto.TidakAda:
  265.                     SetVisibilityText(SymTidakAda);
  266.                     break;
  267.                 case SymbolOdonto.Pulpitis:
  268.                     SetVisibilityText(SymPulpitis);
  269.                     break;
  270.                 case SymbolOdonto.GanggrenPurpae:
  271.                     SetVisibilityText(SymGanggrenPulpae);
  272.                     break;
  273.                 case SymbolOdonto.Radix:
  274.                     SetVisibilityText(SymRadix);
  275.                     break;
  276.                 case SymbolOdonto.Granuloom:
  277.                     SetVisibilityText(SymGranuloom);
  278.                     break;
  279.                 case SymbolOdonto.Kyste:
  280.                     SetVisibilityView(SymKyste);
  281.                     break;
  282.                 case SymbolOdonto.Pyorrhoe:
  283.                     SetVisibilityText(SymPyorrhoe);
  284.                     break;
  285.                 case SymbolOdonto.KariesMedia:
  286.                     SetVisibilityText(SymKariesMedia);
  287.                     break;
  288.                 case SymbolOdonto.Karsinoma:
  289.                     SetVisibilityText(SymKarsinoma);
  290.                     break;
  291.             }
  292.         }
  293.  
  294.         private void SetVisibilityText(TextBlock text)
  295.         {
  296.             var properti = Context.GetType().GetProperty(text.Tag.ToString());
  297.             if (properti != null)
  298.             {
  299.                 var propertySummary = Context.GetType().GetProperty("Summary");
  300.                 var summary = propertySummary.GetValue(Context)?.ToString();
  301.                 if (text.Visibility == Visibility.Collapsed)
  302.                 {
  303.                     text.Visibility = Visibility.Visible;
  304.                     summary = SetSummary(text.Tag.ToString(), properti, summary);
  305.                 }
  306.                 else
  307.                 {
  308.                     text.Visibility = Visibility.Collapsed;
  309.                     summary = ReplaceSummary(text.Tag.ToString(), properti, summary);
  310.                 }
  311.                 propertySummary.SetValue(Context, summary);
  312.             }
  313.         }
  314.  
  315.         private void SetVisibilityView(Viewbox viewBox)
  316.         {
  317.             var properti = Context.GetType().GetProperty(viewBox.Tag.ToString());
  318.             if (properti != null)
  319.             {
  320.                 var propertySummary = Context.GetType().GetProperty("Summary");
  321.                 var summary = propertySummary.GetValue(Context)?.ToString();
  322.                 if (viewBox.Visibility == Visibility.Collapsed)
  323.                 {
  324.                     viewBox.Visibility = Visibility.Visible;
  325.                     summary = SetSummary(viewBox.Tag.ToString(), properti, summary);
  326.                 }
  327.                 else
  328.                 {
  329.                     viewBox.Visibility = Visibility.Collapsed;
  330.                     summary = ReplaceSummary(viewBox.Tag.ToString(), properti, summary);
  331.                 }
  332.                 propertySummary.SetValue(Context, summary);
  333.             }
  334.         }
  335.     }
  336. }
  337.  
RAW Paste Data