/// <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); }
/// <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); }