/// <summary>
 /// Inserts the specified user.
 /// </summary>
 /// <param name="user">The user.</param>
 public void Insert(FigureDetail user)
 {
     throw new NotImplementedException();
 }
        /// <summary>
        /// Updates the specified figure.
        /// </summary>
        /// <param name="figure">The figure.</param>
        public void Update(Figure figure)
        {
            //var oldFigure = this.Context.Figures.FirstOrDefault(x => x.Id == figure.Id);
            //if (oldFigure == null) return;
            //oldFigure.Name = figure.Name;
            //oldFigure.Description = figure.Description;
            //// oldFigure.LastUpdatedUser = AppContext.LoggedInUser.Id;
            //oldFigure.LastUpdatedDate = DateTime.Now;
            //oldFigure.Version++;
            //this.Context.SaveChanges();

            try
            {
                var originalFigure = this.Context.Figures.FirstOrDefault(x => x.Id == figure.Id);
                if (originalFigure == null)
                {
                    throw new Exception("Không tồn tại dữ liệu trong CSDL.");
                }

                var figureList = this.Context.FigureDetails.Where(x => x.FigureId == figure.Id).ToList();

                originalFigure.Name        = figure.Name;
                originalFigure.ClinicId    = figure.ClinicId;
                originalFigure.Description = figure.Description;
                originalFigure.Version++;


                foreach (var orginItem in figureList)
                {
                    var item = figure.FigureDetail.FirstOrDefault(x => x.Id == orginItem.Id);
                    if (item == null)
                    {
                        this.Context.FigureDetails.Remove(orginItem);
                    }
                    else
                    {
                        orginItem.MedicineId = item.MedicineId;
                        orginItem.FigureId   = item.FigureId;
                        orginItem.Volumn     = item.Volumn;
                        orginItem.Version++;
                    }
                }

                foreach (var orginItem in figure.FigureDetail)
                {
                    var item = originalFigure.FigureDetail.FirstOrDefault(x => x.Id == orginItem.Id);
                    if (item != null)
                    {
                        continue;
                    }
                    var newItem = new FigureDetail
                    {
                        Volumn     = orginItem.Volumn,
                        FigureId   = orginItem.FigureId,
                        MedicineId = orginItem.MedicineId,
                        Version    = 0
                    };
                    originalFigure.FigureDetail.Add(newItem);
                }

                originalFigure.LastUpdatedDate = DateTime.Now;


                this.Context.SaveChanges();
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
            }
        }