public IHttpActionResult Post(SyllabusManagePostRequest requestData)
        {
            var requestService  = new Service.Utility.RequestDataHelper <SyllabusManagePostRequest>();
            var checkColumnKeys = new string[3] {
                "token", "circleKey", "syllabuses"
            };
            var checkEmpty = requestService.CheckColumnEmpty(requestData, checkColumnKeys);
            var result     = new Infrastructure.ViewModel.Base.BaseResponse <List <Infrastructure.Entity.Syllabus> >();

            //取得資料
            if (checkEmpty == false)
            {
                result.State   = Infrastructure.ViewModel.Base.LogState.RequestDataError;
                result.Success = false;
                result.Message = "確認是否遺漏資訊";
                return(Content(HttpStatusCode.BadRequest, result));
            }

            var syllabusService = new SyllabusService();
            var data            = syllabusService.SyllabusesDataProxy(requestData);


            if (data == null)
            {
                result.State   = Infrastructure.ViewModel.Base.LogState.Error;
                result.Success = false;
                result.Message = "新增失敗";
                return(Ok(result));
            }
            result.Success = true;
            result.Message = "新增成功";
            result.Data    = data;
            return(Ok(result));
        }
        public IHttpActionResult Put(SyllabusManagePostRequest requestData)
        {
            var requestService  = new Service.Utility.RequestDataHelper <SyllabusManagePostRequest>();
            var checkColumnKeys = new string[5] {
                "id", "name", "note", "date", "token"
            };
            var checkEmpty = requestService.CheckColumnEmpty(requestData, checkColumnKeys);
            var result     = new Infrastructure.ViewModel.Base.BaseResponse <Infrastructure.Entity.Syllabus>();

            if (checkEmpty == false)
            {
                result.State   = Infrastructure.ViewModel.Base.LogState.RequestDataError;
                result.Success = false;
                result.Message = "確認是否遺漏資訊";
                return(Content(HttpStatusCode.BadRequest, result));
            }

            var syllabusService = new SyllabusService();
            var data            = syllabusService.UpdateSyllabusByToken(requestData.Id.Value,
                                                                        requestData.Name,
                                                                        requestData.Note,
                                                                        requestData.Date,
                                                                        requestData.Token);

            if (data == null)
            {
                result.State   = Infrastructure.ViewModel.Base.LogState.Error;
                result.Success = false;
                result.Message = "編輯失敗";
                return(Ok(result));
            }
            result.Success = true;
            result.Message = "編輯成功";
            result.Data    = data;
            return(Ok(result));
        }
Esempio n. 3
0
        /// <summary>
        /// 新增多筆課程章節
        /// </summary>
        /// <param name="circleKey"></param>
        /// <param name="datas"></param>
        /// <param name="token"></param>
        /// <returns></returns>
        public List <Syllabus> SyllabusesDataProxy(SyllabusManagePostRequest data)
        {
            var tokenService = new TokenService();
            var tokenInfo    = tokenService.GetTokenInfo(data.Token).Result;

            if (tokenInfo == null)
            {
                return(null);
            }
            var db = _uow.DbContext;

            try
            {
                //查出新增的資料
                var insertDatas = (from d in data.Syllabuses
                                   where d.Id == null || d.Id <= 0
                                   select new Syllabus
                {
                    Course_No = data.CircleKey.ToLower(),
                    Created = TimeData.Create(DateTime.UtcNow),
                    Deleted = TimeData.Create(null),
                    Updated = TimeData.Create(null),
                    CreateUser = tokenInfo.MemberId,
                    Enable = true,
                    Name = d.Title,
                    Note = d.Note,
                    Syll_Date = d.Date.ToUniversalTime(),
                    Visibility = true
                }).OrderBy(t => t.Syll_Date).ToList();
                var insertSort = 0;
                //整理新增資料
                foreach (var insertData in insertDatas)
                {
                    var guid = Guid.NewGuid();
                    insertData.Sort      = insertSort;
                    insertData.Syll_Guid = guid;
                    insertSort++;
                }
                db.Syllabus.AddRange(insertDatas);

                //查出要編輯的資料
                var updateDatas = data.Syllabuses.Where(t => t.Id.HasValue || t.Id > 0).ToList();

                foreach (var updateData in updateDatas)
                {
                    var dbData = db.Syllabus.Find(updateData.Id);
                    dbData.Name       = updateData.Title;
                    dbData.Note       = updateData.Note;
                    dbData.Syll_Date  = updateData.Date.ToUniversalTime();
                    dbData.Updated    = TimeData.Create(DateTime.UtcNow);
                    dbData.UpdateUser = tokenInfo.MemberId;
                    dbData.Sort       = updateData.Sort;
                }
                //比對需要刪除資料的查詢
                var checkDatas = (from sy in db.Syllabus
                                  where sy.Course_No == data.CircleKey
                                  select sy.Id).ToList();
                //取得聯集
                var unionDatas = checkDatas.Union(data.Syllabuses.Where(t => t.Id.HasValue).Select(t => t.Id.Value));
                //取得要刪除的資料群
                var deleteDatas = unionDatas.Except(data.Syllabuses.Where(t => t.Id.HasValue).Select(t => t.Id.Value));
                foreach (var deleteData in deleteDatas)
                {
                    var removeData = db.Syllabus.Find(deleteData);
                    if (removeData == null)
                    {
                        continue;
                    }
                    db.Syllabus.Remove(removeData);
                }
                db.SaveChanges();
                //重新計算排序
                UpdateSort(data.CircleKey.ToLower());
                var responseData = db.Syllabus.Where(t => t.Course_No == data.CircleKey.ToLower()).ToList();
                return(responseData);
            }
            catch (Exception ex)
            {
                return(null);

                throw ex;
            }
        }