Пример #1
0
        public AuthorsModel CreateAndReturn()
        {
            AuthorsModel _AuthorsModel = new AuthorsModel();

            if (this.Create())
            {
                _AuthorsModel = this;
            }
            return(_AuthorsModel);
        }
Пример #2
0
        /// <summary>
        /// 以藝術家編號取得藝術家
        /// </summary>
        /// <param name="authorsNo">藝術家編號</param>
        /// <returns></returns>
        public static AuthorsModel GetAuthorDetail(int authorsNo)
        {
            AuthorsModel _AuthorsModel = new AuthorsModel();

            using (var context = new EG_MagicCubeEntities())
            {
                if (context.Authors.Count() > 0)
                {
                    var r_Authors = context?.Authors?.AsQueryable()?.Where(c => c.IsDel != "Y" && c.AuthorsNo == authorsNo).Select(c => c).FirstOrDefault();


                    if (r_Authors != null)
                    {
                        var r_AuthorsPropArea = context?.AuthorsPropArea?.AsQueryable()?.Where(c => c.AuthorsNo == r_Authors.AuthorsNo).ToList();
                        var r_AuthorsPropTag  = context?.AuthorsPropTag?.AsQueryable()?.Where(c => c.AuthorsNo == r_Authors.AuthorsNo).ToList();
                        int _WorksAmount      = (context?.WorksAuthors?.AsQueryable()?.Where(c => c.Author_No == r_Authors.AuthorsNo).Count()).Value;
                        _AuthorsModel.AuthorsNo    = r_Authors.AuthorsNo;
                        _AuthorsModel.AuthorsCName = r_Authors.AuthorsCName;
                        _AuthorsModel.AuthorsEName = r_Authors.AuthorsEName;

                        if (r_AuthorsPropArea != null && r_AuthorsPropArea.Count > 0)
                        {
                            _AuthorsModel.AuthorsAreaNo_InputString = r_AuthorsPropArea.Select(apa => Convert.ToString(apa.AuthorsAreaNo)).ToList();
                            _AuthorsModel.AuthorsPropArea           = r_AuthorsPropArea.Select(apa =>
                                                                                               new MenuViewModel()
                            {
                                MenuID = apa.Menu_AuthorsArea.AuthorsAreaNo, MenuName = apa.Menu_AuthorsArea.AuthorsAreaName
                            }).ToList();
                        }
                        if (r_AuthorsPropTag != null && r_AuthorsPropTag.Count > 0)
                        {
                            _AuthorsModel.AuthorsTagNo_InputString = r_AuthorsPropTag.Select(apt => Convert.ToString(apt.AuthorsTagNo)).ToList();
                            _AuthorsModel.AuthorsPropTag           = r_AuthorsPropTag.Select(apa =>
                                                                                             new MenuViewModel()
                            {
                                MenuID = apa.Menu_AuthorsTag.AuthorsTagNo, MenuName = apa.Menu_AuthorsTag.AuthorsTagName
                            }).ToList();
                        }
                        _AuthorsModel.CreateDate  = r_Authors.CreateDate;
                        _AuthorsModel.MaterialsID = r_Authors.MaterialsID;
                        _AuthorsModel.CreateUser  = r_Authors.CreateUser;
                        _AuthorsModel.ModifyDate  = r_Authors.ModifyDate.Value;
                        _AuthorsModel.ModifyUser  = r_Authors.ModifyUser;
                        _AuthorsModel.WorksAmount = r_Authors.WorksAmount;
                        _AuthorsModel.Rating      = r_Authors.Rating;
                    }
                }
            }

            return(_AuthorsModel);
        }
Пример #3
0
        /// <summary>
        /// 計算作品分級
        /// </summary>
        /// <param name="_WorksModel"></param>
        /// <returns></returns>
        public static int CalculateWorksRating(WorksModel _WorksModel)
        {
            double _Rating      = 0;
            int    _WorksAmount = 0;

            using (var context = new EG_MagicCubeEntities())
            {
                foreach (int _AuthorNo in _WorksModel.AuthorNo_InputString.Select(n => Convert.ToInt32(n)).ToArray())
                {
                    _WorksAmount = _WorksAmount + (context?.WorksAuthors?.AsQueryable().Where(c => c.Author_No == _AuthorNo).Count()).Value;
                }
            }
            _WorksAmount = (_WorksAmount + 1) / _WorksModel.AuthorNo_InputString.Select(n => Convert.ToInt32(n)).Count();
            double _AuthorsRating = Convert.ToDouble(AuthorsModel.CalculateAuthorsRating(_WorksAmount));

            _Rating = (_WorksModel.Marketability * 0.3) + (_WorksModel.Packageability * 0.1) + (_WorksModel.Valuability * 0.25) + (_WorksModel.Artisticability * 0.2) + (_AuthorsRating * 0.15);
            return(Convert.ToInt32(_Rating));
        }
Пример #4
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);
        }
Пример #5
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);
        }
Пример #6
0
        /// <summary>
        /// 以新藝術家資料更新
        /// </summary>
        /// <param name="newAuthors">新藝術家資料</param>
        /// <returns></returns>
        public static bool Update(AuthorsModel newAuthors)
        {
            using (var context = new EG_MagicCubeEntities())
            {
                var oldAuthors = context.Authors.AsQueryable().First(x => x.AuthorsNo == newAuthors.AuthorsNo);

                if (oldAuthors.AuthorsPropArea != null)
                {
                    foreach (AuthorsPropArea _AuthorsPropArea in oldAuthors.AuthorsPropArea.ToList())
                    {
                        var del_AuthorsPropArea = context.AuthorsPropArea.AsQueryable().FirstOrDefault(c => c.AuthorsPropAreaNo == _AuthorsPropArea.AuthorsPropAreaNo);
                        context.AuthorsPropArea.Remove(del_AuthorsPropArea);
                    }
                }
                if (oldAuthors.AuthorsPropTag != null)
                {
                    foreach (AuthorsPropTag _AuthorsPropTag in oldAuthors.AuthorsPropTag.ToList())
                    {
                        var del_del_AuthorsPropTag = context.AuthorsPropTag.AsQueryable().FirstOrDefault(c => c.AuthorsPropTagNo == _AuthorsPropTag.AuthorsPropTagNo);
                        context.AuthorsPropTag.Remove(del_del_AuthorsPropTag);
                    }
                }

                if (oldAuthors != null)
                {
                    oldAuthors.MaterialsID  = newAuthors.MaterialsID ?? "";
                    oldAuthors.AuthorsCName = newAuthors.AuthorsCName ?? "";
                    oldAuthors.AuthorsEName = newAuthors.AuthorsEName ?? "";
                    oldAuthors.ModifyUser   = HttpContext.Current?.User?.Identity?.Name ?? "";
                    oldAuthors.ModifyDate   = DateTime.Now;
                    oldAuthors.Rating       = newAuthors.Rating ?? "";
                    oldAuthors.WorksAmount  = newAuthors.WorksAmount;
                }
                if (newAuthors.AuthorsAreaNo_InputString.Count > 0)
                {
                    foreach (int _AuthorsAreaNo in newAuthors.AuthorsAreaNo_InputString.Select(n => Convert.ToInt32(n)).ToArray())
                    {
                        context.AuthorsPropArea.Add(new AuthorsPropArea()
                        {
                            AuthorsNo = newAuthors.AuthorsNo, AuthorsAreaNo = _AuthorsAreaNo
                        });
                    }
                }
                if (newAuthors.AuthorsTagNo_InputString.Count > 0)
                {
                    foreach (int _AuthorsTagNo in newAuthors.AuthorsTagNo_InputString.Select(n => Convert.ToInt32(n)).ToArray())
                    {
                        context.AuthorsPropTag.Add(new AuthorsPropTag()
                        {
                            AuthorsNo = newAuthors.AuthorsNo, AuthorsTagNo = _AuthorsTagNo
                        });
                    }
                }

                if (context.SaveChanges() == 0)
                {
                    return(false);
                }
            }

            return(true);
        }