示例#1
0
        /// <summary>
        /// 更新作品資料
        /// </summary>
        /// <param name="newWorks">新作品資料</param>
        /// <returns></returns>
        public static bool Update(WorksModel newWorks)
        {
            Guid Guid_WorksNo = Guid.Parse(newWorks.WorksNo.ToUpper());

            using (var context = new EG_MagicCubeEntities())
            {
                var oldWorks = context.Works.AsQueryable().First(x => x.WorksNo == Guid_WorksNo);
                if (oldWorks != null)
                {
                    if (oldWorks.WorksModules != null)
                    {
                        foreach (WorksModules _WorksModules in oldWorks.WorksModules.ToList())
                        {
                            var del_WorksModules = context.WorksModules.AsQueryable().FirstOrDefault(c => c.WorksModulesNo == _WorksModules.WorksModulesNo);
                            context.WorksModules.Remove(del_WorksModules);
                        }
                    }
                    if (oldWorks.WorksAuthors != null)
                    {
                        foreach (WorksAuthors _WorksAuthors in oldWorks.WorksAuthors.ToList())
                        {
                            var del_WorksAuthors = context.WorksAuthors.AsQueryable().FirstOrDefault(c => c.Works_Author_No == _WorksAuthors.Works_Author_No);
                            context.WorksAuthors.Remove(del_WorksAuthors);
                        }
                    }
                    if (oldWorks.WorksPropGenre != null)
                    {
                        foreach (WorksPropGenre _WorksPropGenre in oldWorks.WorksPropGenre.ToList())
                        {
                            var del_WorksPropGenre = context.WorksPropGenre.AsQueryable().FirstOrDefault(c => c.WorksPropGenreNo == _WorksPropGenre.WorksPropGenreNo);
                            context.WorksPropGenre.Remove(del_WorksPropGenre);
                        }
                    }
                    if (oldWorks.WorksPropStyle != null)
                    {
                        foreach (WorksPropStyle _WorksPropStyle in oldWorks.WorksPropStyle.ToList())
                        {
                            var del_WorksPropStyle = context.WorksPropStyle.AsQueryable().FirstOrDefault(c => c.WorksPropStyleNo == _WorksPropStyle.WorksPropStyleNo);
                            context.WorksPropStyle.Remove(del_WorksPropStyle);
                        }
                    }
                    if (oldWorks.WorksPropOwner != null)
                    {
                        foreach (WorksPropOwner _WorksPropOwner in oldWorks.WorksPropOwner.ToList())
                        {
                            var del_WorksPropOwner = context.WorksPropOwner.AsQueryable().FirstOrDefault(c => c.WorksPropOwnerNo == _WorksPropOwner.WorksPropOwnerNo);
                            context.WorksPropOwner.Remove(del_WorksPropOwner);
                        }
                    }
                    if (oldWorks.WorksPropWareType != null)
                    {
                        foreach (WorksPropWareType _WorksPropWareType in oldWorks.WorksPropWareType.ToList())
                        {
                            var del_WorksPropWareType = context.WorksPropWareType.AsQueryable().FirstOrDefault(c => c.WorksPropWareTypeNo == _WorksPropWareType.WorksPropWareTypeNo);
                            context.WorksPropWareType.Remove(del_WorksPropWareType);
                        }
                    }
                }
                oldWorks.MaterialsID     = newWorks.MaterialsID;
                oldWorks.AuthorsNo       = newWorks.AuthorsNo;
                oldWorks.WorksName       = newWorks.WorksName;
                oldWorks.YearStart       = newWorks.YearStart;
                oldWorks.YearEnd         = newWorks.YearEnd;
                oldWorks.Cost            = newWorks.Cost;
                oldWorks.Price           = newWorks.Price;
                oldWorks.GrossMargin     = newWorks.GrossMargin = Math.Round((((Convert.ToDouble((newWorks.Price / double.Parse("1.05"))) - Convert.ToDouble(newWorks.Cost)) / Convert.ToDouble((newWorks.Price / double.Parse("1.05")))) * Convert.ToDouble(100)), 3);;
                oldWorks.PricingDate     = newWorks.PricingDate;
                oldWorks.Artisticability = newWorks.Artisticability;
                oldWorks.Marketability   = newWorks.Marketability;
                oldWorks.Packageability  = newWorks.Packageability;
                oldWorks.Valuability     = newWorks.Valuability;
                oldWorks.ModifyUser      = HttpContext.Current?.User?.Identity?.Name ?? "";
                oldWorks.ModifyDate      = System.DateTime.Now;
                oldWorks.Remarks         = newWorks.Remarks;
                oldWorks.Rating          = CalculateWorksRating(newWorks).ToString();
                foreach (int _AuthorNo in newWorks.AuthorNo_InputString.Select(n => Convert.ToInt32(n)).ToArray())
                {
                    var _Authors       = context?.Authors?.FirstOrDefault(c => c.AuthorsNo == _AuthorNo);
                    int _WorksAmount   = (context?.WorksAuthors?.AsQueryable().Where(c => c.Author_No == _AuthorNo).Count()).Value;
                    int _AuthorsRating = AuthorsModel.CalculateAuthorsRating(_WorksAmount);
                    _Authors.Rating      = _AuthorsRating.ToString();
                    _Authors.WorksAmount = _WorksAmount;
                }
                //組件
                foreach (WorksModuleModel _WorksModuleModel in newWorks.WorksModuleList)
                {
                    WorksModules _WorksModules = new WorksModules();
                    _WorksModules.WorksNo  = oldWorks.WorksNo;
                    _WorksModules.Material = _WorksModuleModel.Material.MenuID;
                    _WorksModules.Measure  = _WorksModuleModel.Measure;

                    _WorksModules.Length     = _WorksModuleModel.Length;
                    _WorksModules.Width      = _WorksModuleModel.Width;
                    _WorksModules.Height     = _WorksModuleModel.Height;
                    _WorksModules.Deep       = _WorksModuleModel.Deep;
                    _WorksModules.TimeLength = _WorksModuleModel.TimeLength ?? "";

                    _WorksModules.Amount    = _WorksModuleModel.Amount;
                    _WorksModules.CountNoun = _WorksModuleModel.CountNoun.MenuID;
                    context.WorksModules.Add(_WorksModules);
                }
                //foreach (HttpPostedFileBase _Files in newWorks.UploadWorksFiles)
                //{
                //    if (_Files != null)
                //    {
                //        WorksFilesModel.InsFile(oldWorks.WorksNo.ToString(), _Files);
                //        //context.WorksFiles.Add(new WorksFiles() { WorksNo = oldWorks.WorksNo, FileBase64Str = FileUrl });
                //    }
                //}
                //藝術家
                if (newWorks.AuthorNo_InputString.Count != 0)
                {
                    foreach (int _AuthorNo in newWorks.AuthorNo_InputString.Select(n => Convert.ToInt32(n)).ToArray())
                    {
                        context.WorksAuthors.Add(new WorksAuthors()
                        {
                            Works_No = oldWorks.WorksNo, Author_No = _AuthorNo
                        });
                    }
                }

                //類型
                if (newWorks.GenreNo_InputString.Count != 0)
                {
                    foreach (int _GenreNo in newWorks.GenreNo_InputString.Select(n => Convert.ToInt32(n)).ToArray())
                    {
                        context.WorksPropGenre.Add(new WorksPropGenre()
                        {
                            WorksNo = oldWorks.WorksNo, GenreNo = _GenreNo
                        });
                    }
                }

                //風格
                if (newWorks.StyleNo_InputString.Count != 0)
                {
                    foreach (int _StyleNo in newWorks.StyleNo_InputString.Select(n => Convert.ToInt32(n)).ToArray())
                    {
                        context.WorksPropStyle.Add(new WorksPropStyle()
                        {
                            WorksNo = oldWorks.WorksNo, StyleNo = _StyleNo
                        });
                    }
                }

                //擁有者
                if (newWorks.OwnerNo_InputString.Count != 0)
                {
                    foreach (int _OwnerNo in newWorks.OwnerNo_InputString.Select(n => Convert.ToInt32(n)).ToArray())
                    {
                        context.WorksPropOwner.Add(new WorksPropOwner()
                        {
                            WorksNo = oldWorks.WorksNo, OwnerNo = _OwnerNo
                        });
                    }
                }

                //庫別
                if (newWorks.WareTypeNo_InputString.Count != 0)
                {
                    foreach (int _WareTypeNo in newWorks.WareTypeNo_InputString.Select(n => Convert.ToInt32(n)).ToArray())
                    {
                        context.WorksPropWareType.Add(new WorksPropWareType()
                        {
                            WorksNo = oldWorks.WorksNo, WareTypeNo = _WareTypeNo
                        });
                    }
                }
                if (context.SaveChanges() == 0)
                {
                    return(false);
                }
                else
                {
                    foreach (int _AuthorNo in newWorks.AuthorNo_InputString.Select(n => Convert.ToInt32(n)).ToArray())
                    {
                        var _Authors       = context?.Authors?.FirstOrDefault(c => c.AuthorsNo == _AuthorNo);
                        int _WorksAmount   = (context?.WorksAuthors?.AsQueryable().Where(c => c.Author_No == _AuthorNo).Count()).Value;
                        int _AuthorsRating = AuthorsModel.CalculateAuthorsRating(_WorksAmount);
                        _Authors.Rating      = _AuthorsRating.ToString();
                        _Authors.WorksAmount = _WorksAmount;
                        context.SaveChanges();
                    }
                }
            }

            return(true);
        }
示例#2
0
        /// <summary>
        /// 新增作品
        /// </summary>
        /// <returns></returns>
        public bool Create()
        {
            using (var context = new EG_MagicCubeEntities())
            {
                Works _Works = new Works();
                _Works.WorksNo     = Guid.NewGuid();
                this.WorksNo       = _Works.WorksNo.ToString();
                _Works.MaterialsID = this.MaterialsID;
                _Works.AuthorsNo   = this.AuthorsNo;
                _Works.WorksName   = this.WorksName;
                _Works.YearStart   = this.YearStart;
                _Works.YearEnd     = this.YearEnd;
                _Works.Cost        = this.Cost;
                _Works.Price       = this.Price;
                _Works.GrossMargin = Math.Round((((Convert.ToDouble((this.Price / double.Parse("1.05"))) - Convert.ToDouble(this.Cost)) / Convert.ToDouble((this.Price / double.Parse("1.05")))) * Convert.ToDouble(100)), 3);
                if (double.IsNaN(_Works.GrossMargin))
                {
                    _Works.GrossMargin = 0.0;
                }
                _Works.PricingDate     = DateTime.Now;
                _Works.Artisticability = this.Artisticability;
                _Works.Marketability   = this.Marketability;
                _Works.Packageability  = this.Packageability;
                _Works.Valuability     = this.Valuability;
                _Works.CreateUser      = this.CreateUser;
                _Works.CreateDate      = DateTime.Now;
                _Works.ModifyUser      = this.ModifyUser;
                _Works.ModifyDate      = DateTime.Now;
                _Works.Remarks         = this.Remarks;
                _Works.Rating          = CalculateWorksRating(this).ToString();
                _Works.IsDel           = "";

                context.Works.Add(_Works);

                if (context.SaveChanges() > 0)
                {
                    //組件
                    foreach (WorksModuleModel _WorksModuleModel in this.WorksModuleList)
                    {
                        WorksModules _WorksModules = new WorksModules();
                        _WorksModules.WorksNo  = _Works.WorksNo;
                        _WorksModules.Material = _WorksModuleModel.Material.MenuID;
                        _WorksModules.Measure  = _WorksModuleModel.Measure;

                        _WorksModules.Length     = _WorksModuleModel.Length;
                        _WorksModules.Width      = _WorksModuleModel.Width;
                        _WorksModules.Height     = _WorksModuleModel.Height;
                        _WorksModules.Deep       = _WorksModuleModel.Deep;
                        _WorksModules.TimeLength = _WorksModuleModel.TimeLength ?? "";

                        _WorksModules.Amount    = _WorksModuleModel.Amount;
                        _WorksModules.CountNoun = _WorksModuleModel.CountNoun.MenuID;
                        context.WorksModules.Add(_WorksModules);
                    }
                    //圖片
                    //foreach (HttpPostedFileBase _Files in this.UploadWorksFiles)
                    //{
                    //    if (_Files != null)
                    //    {
                    //        WorksFilesModel.InsFile(_Works.WorksNo.ToString(), _Files);
                    //        //context.WorksFiles.Add(new WorksFiles() { WorksNo = _Works.WorksNo, FileBase64Str = FileUrl });
                    //    }

                    //}
                    //藝術家
                    foreach (int _AuthorNo in this.AuthorNo_InputString.Select(n => Convert.ToInt32(n)).ToArray())
                    {
                        context.WorksAuthors.Add(new WorksAuthors()
                        {
                            Works_No = _Works.WorksNo, Author_No = _AuthorNo
                        });
                    }
                    //類型
                    foreach (int _GenreNo in this.GenreNo_InputString.Select(n => Convert.ToInt32(n)).ToArray())
                    {
                        context.WorksPropGenre.Add(new WorksPropGenre()
                        {
                            WorksNo = _Works.WorksNo, GenreNo = _GenreNo
                        });
                    }
                    //風格
                    foreach (int _StyleNo in this.StyleNo_InputString.Select(n => Convert.ToInt32(n)).ToArray())
                    {
                        context.WorksPropStyle.Add(new WorksPropStyle()
                        {
                            WorksNo = _Works.WorksNo, StyleNo = _StyleNo
                        });
                    }
                    //擁有者
                    foreach (int _OwnerNo in this.OwnerNo_InputString.Select(n => Convert.ToInt32(n)).ToArray())
                    {
                        context.WorksPropOwner.Add(new WorksPropOwner()
                        {
                            WorksNo = _Works.WorksNo, OwnerNo = _OwnerNo
                        });
                    }
                    //庫別
                    foreach (int _WareTypeNo in this.WareTypeNo_InputString.Select(n => Convert.ToInt32(n)).ToArray())
                    {
                        context.WorksPropWareType.Add(new WorksPropWareType()
                        {
                            WorksNo = _Works.WorksNo, WareTypeNo = _WareTypeNo
                        });
                    }
                    if (context.SaveChanges() == 0)
                    {
                        return(false);
                    }
                    else
                    {
                        foreach (int _AuthorNo in this.AuthorNo_InputString.Select(n => Convert.ToInt32(n)).ToArray())
                        {
                            var _Authors       = context?.Authors?.FirstOrDefault(c => c.AuthorsNo == _AuthorNo);
                            int _WorksAmount   = (context?.WorksAuthors?.AsQueryable().Where(c => c.Author_No == _AuthorNo).Count()).Value;
                            int _AuthorsRating = AuthorsModel.CalculateAuthorsRating(_WorksAmount);
                            _Authors.Rating      = _AuthorsRating.ToString();
                            _Authors.WorksAmount = _WorksAmount;
                            context.SaveChanges();
                        }
                    }
                }
                else
                {
                    return(false);
                }
            }
            return(true);
        }