Beispiel #1
0
        /// <summary>
        /// 新增並回傳
        /// </summary>
        /// <returns></returns>
        public WorksModel CreateAndReturn()
        {
            WorksModel _PackagesModel = new WorksModel();

            if (this.Create())
            {
                _PackagesModel = GetWorksModelDetail(this.WorksNo);
            }
            return(_PackagesModel);
        }
Beispiel #2
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));
        }
Beispiel #3
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);
        }
Beispiel #4
0
        /// <summary>
        /// 用作品編號找作品
        /// </summary>
        /// <param name="WorksNo"></param>
        /// <returns></returns>
        public static WorksModel GetWorksModelDetail(string WorksNo)
        {
            WorksModel _WorksModel  = new WorksModel();
            Guid       Guid_WorksNo = Guid.Parse(WorksNo.ToUpper());

            using (var context = new EG_MagicCubeEntities())
            {
                Works _Works = context.Works.AsQueryable().Where(c => c.IsDel != "Y" && c.WorksNo.Equals(Guid_WorksNo)).Select(c => c).FirstOrDefault <Works>();
                if (_Works != null)
                {
                    var _WorksAuthorsist       = context.WorksAuthors.AsQueryable().Where(c => c.Works_No.Equals(Guid_WorksNo)).Select(wa => wa).ToList();
                    var _WorksPropGenreList    = context.WorksPropGenre.AsQueryable().Where(c => c.WorksNo.Equals(Guid_WorksNo)).Select(wpg => wpg).ToList();
                    var _WorksPropOwnerList    = context.WorksPropOwner.AsQueryable().Where(c => c.WorksNo.Equals(Guid_WorksNo)).Select(wpo => wpo).ToList();
                    var _WorksPropStyleList    = context.WorksPropStyle.AsQueryable().Where(c => c.WorksNo.Equals(Guid_WorksNo)).Select(wps => wps).ToList();
                    var _WorksPropWareTypeList = context.WorksPropWareType.AsQueryable().Where(c => c.WorksNo.Equals(Guid_WorksNo)).Select(wpwt => wpwt).ToList();
                    var _WorksWorksFilesList   = context.WorksFiles.AsQueryable().Where(c => c.WorksNo.Equals(Guid_WorksNo)).OrderBy(c => c.Sorting).ThenBy(c => c.WorksFilesNo).Select(wf => wf).ToList();
                    var _WorksWorksModulesList = context.WorksModules.AsQueryable().Where(c => c.WorksNo.Equals(Guid_WorksNo)).Select(wm => wm).ToList();

                    _WorksModel.WorksNo         = _Works.WorksNo.ToString();
                    _WorksModel.MaterialsID     = _Works.MaterialsID;
                    _WorksModel.AuthorsNo       = _Works.AuthorsNo;
                    _WorksModel.AuthorsName     = _Works.WorksAuthors.FirstOrDefault().Authors.AuthorsCName;
                    _WorksModel.WorksName       = _Works.WorksName;
                    _WorksModel.YearStart       = _Works.YearStart;
                    _WorksModel.YearEnd         = _Works.YearEnd;
                    _WorksModel.Remarks         = _Works.Remarks;
                    _WorksModel.Cost            = _Works.Cost;
                    _WorksModel.Price           = _Works.Price;
                    _WorksModel.PricingDate     = _Works.PricingDate;
                    _WorksModel.GrossMargin     = _Works.GrossMargin;
                    _WorksModel.Marketability   = _Works.Marketability;
                    _WorksModel.Packageability  = _Works.Packageability;
                    _WorksModel.Valuability     = _Works.Valuability;
                    _WorksModel.Artisticability = _Works.Artisticability;
                    _WorksModel.CreateUser      = _Works.CreateUser;
                    _WorksModel.CreateDate      = _Works.CreateDate;
                    _WorksModel.ModifyUser      = _Works.ModifyUser;
                    _WorksModel.Rating          = _Works.Rating;
                    _WorksModel.ModifyDate      = (DateTime)_Works.ModifyDate;

                    _WorksModel.AuthorNo_InputString   = _WorksAuthorsist?.Select(wa => wa.Author_No.ToString()).ToList();
                    _WorksModel.GenreNo_InputString    = _WorksPropGenreList?.Select(wpg => wpg.GenreNo.ToString()).ToList();
                    _WorksModel.StyleNo_InputString    = _WorksPropStyleList?.Select(wpo => wpo.StyleNo.ToString()).ToList();
                    _WorksModel.OwnerNo_InputString    = _WorksPropOwnerList?.Select(wps => wps.OwnerNo.ToString()).ToList();
                    _WorksModel.WareTypeNo_InputString = _WorksPropWareTypeList?.Select(wpwt => wpwt.WareTypeNo.ToString()).ToList();

                    _WorksModel.WorksAuthors = _WorksAuthorsist?.Select(wa => new MenuViewModel()
                    {
                        MenuID = wa.Author_No, MenuName = wa.Authors.AuthorsCName
                    }).ToList();
                    _WorksModel.WorksPropGenreList = _WorksPropGenreList?.Select(wpg => new MenuViewModel()
                    {
                        MenuID = wpg.GenreNo, MenuName = wpg.Menu_Genre.GenreName
                    }).ToList();
                    _WorksModel.WorksPropOwnerList = _WorksPropOwnerList?.Select(wpo => new MenuViewModel()
                    {
                        MenuID = wpo.OwnerNo, MenuName = wpo.Menu_Owner.OwnerName
                    }).ToList();
                    _WorksModel.WorksPropStyleList = _WorksPropStyleList?.Select(wps => new MenuViewModel()
                    {
                        MenuID = wps.StyleNo, MenuName = wps.Menu_Style.StyleName
                    }).ToList();
                    _WorksModel.WorksPropWareTypeList = _WorksPropWareTypeList?.Select(wpwt => new MenuViewModel()
                    {
                        MenuID = wpwt.WareTypeNo, MenuName = wpwt.Menu_WareType.WareTypeName
                    }).ToList();
                    _WorksModel.ImageCount     = _WorksWorksFilesList.Count;
                    _WorksModel.WorksAmount    = _Works.WorksAuthors.FirstOrDefault().Authors.WorksAmount;
                    _WorksModel.ViewWorksFiles = _Works.WorksFiles.Select(wf => wf.FileBase64Str).ToList();

                    _WorksModel.WorksModuleList = _WorksWorksModulesList?.Select(wm => new WorksModel.WorksModuleModel()
                    {
                        WorksModulesNo = wm.WorksModulesNo,
                        WorksNo        = wm.WorksNo.ToString(),
                        Material       = new MenuViewModel {
                            MenuID = wm.Menu_Material.MaterialNo, MenuName = wm.Menu_Material.MaterialName
                        },
                        Measure    = wm.Measure,
                        Length     = wm.Length,
                        Width      = wm.Width,
                        Height     = wm.Height,
                        Deep       = wm.Deep,
                        TimeLength = wm.TimeLength,
                        Amount     = wm.Amount,
                        CountNoun  = new MenuViewModel {
                            MenuID = wm.Menu_CountNoun.CountNounNo, MenuName = wm.Menu_CountNoun.CountNounName
                        }
                    }).ToList();
                }
            }
            return(_WorksModel);
        }