public IHttpActionResult Put(int id, [FromBody] EditKMCModel model) { if (model.IsPublic) { ModelState.Remove("model.RoleIds"); } if (model.IsEditor) { ModelState.Remove("model.File"); ModelState.Remove("model.Type"); } else { ModelState.Remove("model.EditorCode"); } var kmc = db.KMCs.Where(s => s.Id == id).FirstOrDefault(); if (kmc != null) { if (ModelState.IsValid) { kmc.Title = model.Title; kmc.Description = model.Description; kmc.Thumbnail = model.ThumbnailUrl; kmc.IsEditor = model.IsEditor; kmc.KMCType = model.Type; kmc.FileId = model.FileId; kmc.FileType = model.FileType; kmc.EditorCode = model.EditorCode; kmc.IsPublic = model.IsPublic; kmc.IsShow = model.IsShow; db.Entry(kmc).State = EntityState.Modified; db.Entry(kmc).Property(x => x.KMCCategoryId).IsModified = false; db.KMCRole.RemoveRange(db.KMCRole.Where(k => k.KMCId == id));//remove all if (!model.IsPublic && model.RoleIds != null) { foreach (var roleid in model.RoleIds) { var kmcrole = new KMCRole { RoleId = roleid, KMC = kmc, }; db.KMCRole.Add(kmcrole); } } db.SaveChanges(); return(Ok(true)); } else { return(BadRequest(ModelState)); } } else { return(NotFound()); } }
public async Task <ActionResult> Edit(Models.EditKMCModel model) { if (model.IsPublic) { ModelState.Remove("RoleIds"); } if (model.IsEditor) { ModelState.Remove("File"); ModelState.Remove("Type"); } else { ModelState.Remove("EditorCode"); //validation of file type if (model.File != null) { var isValid = true; switch (model.Type) { case KMCType.Image: isValid = FileMethod.IsValidType(model.File, filter_imgs); break; case KMCType.Video: isValid = FileMethod.IsValidType(model.File, filter_videos); break; case KMCType.Audio: isValid = FileMethod.IsValidType(model.File, filter_audios); break; case KMCType.Document: isValid = FileMethod.IsValidType(model.File, filter_docs); break; case KMCType.Others: break; default: break; } if (!isValid) { ModelState.AddModelError("File", Language.KMC.ValidIsValidTypeFile); } } else { if (model.FileId != null) { ModelState.Remove("File"); } } } if (ModelState.IsValid) { var modelapi = new EditKMCModel { KMCCategoryId = model.CategoryId, Title = model.Title, Description = model.Description, Type = model.Type, IsPublic = model.IsPublic, IsShow = model.IsShow, IsEditor = model.IsEditor, RoleIds = model.RoleIds, EditorCode = model.EditorCode, FileId = model.IsEditor ? null : model.FileId, ThumbnailUrl = model.ThumbnailUrl }; if (model.ThumbnailFile != null) { var filename = FileMethod.SaveFile(model.ThumbnailFile, Server.MapPath("~/img/kmc-thumbnail"), model.ThumbnailUrl); modelapi.ThumbnailUrl = filename; } if (model.File != null) { var responseFile = await FileMethod.UploadFile(new List <HttpPostedFileBase> { model.File }, CurrentUser.UserId, "KMC/", model.File.ContentType); if (responseFile != null) { modelapi.FileId = responseFile.Select(f => f.Id).FirstOrDefault(); modelapi.FileType = model.File.ContentType; } } var response = await WepApiMethod.SendApiAsync <bool>(HttpVerbs.Put, $"KMC/Manage?id={model.Id}", modelapi); if (response.isSuccess) { if (!model.IsPublic && model.IsShow)//send notification { var userIds = new List <int>(); foreach (var roleId in model.RoleIds) { var responseUsers = await WepApiMethod.SendApiAsync <List <UserModel> >(HttpVerbs.Get, $"Administration/Role/GetAllUser?roleId={roleId}"); if (responseUsers.isSuccess) { userIds = userIds.Union(responseUsers.Data.Select(r => r.Id).ToList()).ToList(); } } if (userIds.Count > 0) { ParameterListToSend notificationParameter = new ParameterListToSend(); notificationParameter.Link = $"<a href = '" + BaseURL + "/KMC/Home/Browse/" + model.Id.ToString() + "' > here </a>"; CreateAutoReminder notification = new CreateAutoReminder { NotificationType = NotificationType.KMCCreated, NotificationCategory = NotificationCategory.Learning, ParameterListToSend = notificationParameter, StartNotificationDate = DateTime.Now, ReceiverId = userIds }; var responseNotification = await WepApiMethod.SendApiAsync <ReminderResponse>(HttpVerbs.Post, $"Reminder/SLA/GenerateAutoNotificationReminder/", notification); } } await LogActivity(Modules.KMC, "Edit KMC", model); TempData["SuccessMessage"] = Language.KMC.AlertSuccessUpdate; return(RedirectToAction("Details", "Manage", new { area = "KMC", @id = model.Id })); } else { TempData["ErrorMessage"] = Language.KMC.AlertFailDelete; } } model.filter_imgs = filter_imgs; model.filter_videos = filter_videos; model.filter_audios = filter_audios; model.filter_docs = filter_docs; model.Roles = new SelectList(await GetRoles(), "Id", "Name", 0); return(View(model)); }