public async Task <DrawPie> Save(DrawPie drawPie)
        {
            try
            {
                var slot = drawPie.Slot;
                drawPie.Slot = null;

                var data = _context.DrawPies.AsNoTracking().Where(p => p.Id == drawPie.Id).FirstOrDefault();
                if (data == null)
                {
                    drawPie.AddedDate   = DateTime.Now;
                    drawPie.UpdatedDate = DateTime.Now;
                    var rs = _context.DrawPies.Add(drawPie);
                    drawPie = rs.Entity;
                }
                else
                {
                    drawPie.UpdatedDate = DateTime.Now;
                    var rs = _context.DrawPies.Update(drawPie);
                    drawPie = rs.Entity;
                }
                await _context.SaveChangesAsync();

                drawPie.Slot = slot;
                return(drawPie);
            }catch (Exception ex)
            {
                return(null);
            }
        }
 public void ProcessRecord(int flags, EmfPlusRecordType recordType,byte[] RecordData)
 {
     switch (recordType)
     {
         case EmfPlusRecordType.Header:                       
             break;      
         case EmfPlusRecordType.SetPageTransform:
             EMFSetPageTransform P = EMFSetPageTransform.getTransform(flags, RecordData);
             break;
         case EmfPlusRecordType.Object:
             EMFRecordObject O = EMFRecordObject.getObject(flags,RecordData);
             if (O != null)
             {                    
                 if (ObjectTable.Contains(O.ObjectID))
                 {
                     ObjectTable[O.ObjectID] = O;
                 }
                 else
                 {
                     ObjectTable.Add(O.ObjectID,O);
                 }
             }                    
             break;
         case EmfPlusRecordType.DrawLines:
             //After each instruction we must do something, as the object table is constantly being changed...
             //and we need to use what is currently in the table!
             DrawLines DL = new DrawLines(X, Y, Width, Height, ObjectTable);
             PageItems.AddRange(DL.Process(flags,RecordData));                  
             break;
         case EmfPlusRecordType.DrawString:
             DrawString DS = new DrawString(X, Y, Width, Height, ObjectTable);
             PageItems.AddRange(DS.Process(flags, RecordData));                  
             break;
         case EmfPlusRecordType.FillRects:
             FillRects FR = new FillRects(X, Y, Width, Height,ObjectTable);
             PageItems.AddRange(FR.Process(flags, RecordData));                  
             break;
         case EmfPlusRecordType.DrawRects:
             DrawRects DR = new DrawRects(X, Y, Width, Height,ObjectTable);
             PageItems.AddRange(DR.Process(flags, RecordData));                   
             break;
         case EmfPlusRecordType.FillPolygon:
             FillPolygon FPo = new FillPolygon(X, Y, Width, Height, ObjectTable);
             PageItems.AddRange(FPo.Process(flags, RecordData));  
             break;
         case EmfPlusRecordType.DrawEllipse:
            DrawEllipse DE = new DrawEllipse(X, Y, Width, Height,ObjectTable);
            PageItems.AddRange(DE.Process(flags, RecordData));                   
             break;
         case EmfPlusRecordType.FillEllipse:
            FillEllipse FE = new FillEllipse(X, Y, Width, Height,ObjectTable);
            PageItems.AddRange(FE.Process(flags, RecordData));                   
             break;
         case EmfPlusRecordType.FillPie:
             FillPie FP = new FillPie(X, Y, Width, Height, ObjectTable);
             PageItems.AddRange(FP.Process(flags, RecordData));               
             break;
         case EmfPlusRecordType.DrawPie:
             DrawPie DP = new DrawPie(X, Y, Width, Height, ObjectTable);
             PageItems.AddRange(DP.Process(flags, RecordData));
             break;
         case EmfPlusRecordType.DrawCurve:
             DrawCurve DC = new DrawCurve(X, Y, Width, Height, ObjectTable);
             PageItems.AddRange(DC.Process(flags, RecordData));     
             break;
         case EmfPlusRecordType.Comment:
             Comment CM = new Comment(X, Y, Width, Height, ObjectTable);
             PageItems.AddRange(CM.Process(flags, RecordData));
             break;
         default:
             break;
     }
 }