public IHttpActionResult Post([FromBody] CreateKMCModel model) { if (model.IsPublic) { ModelState.Remove("model.RoleIds"); } if (model.IsEditor) { ModelState.Remove("model.File"); ModelState.Remove("model.Type"); } else { ModelState.Remove("model.EditorCode"); } if (ModelState.IsValid) { var kmc = new KMCs { KMCCategoryId = model.KMCCategoryId, Title = model.Title, Description = model.Description, Thumbnail = model.ThumbnailUrl, IsEditor = model.IsEditor, KMCType = model.Type, FileId = model.FileId, FileType = model.FileType, EditorCode = model.EditorCode, IsPublic = model.IsPublic, IsShow = model.IsShow, CreatedBy = model.CreatedBy, CreatedDate = DateTime.Now }; 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.KMCs.Add(kmc); db.SaveChanges(); return(Ok(kmc.Id)); } return(BadRequest(ModelState)); }
public async Task <ActionResult> Create(Models.CreateKMCModel 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 { ModelState.AddModelError("FileName", Language.KMC.ValidRequiredFile); } } if (ModelState.IsValid) { var modelapi = new CreateKMCModel { KMCCategoryId = model.CategoryId, Title = model.Title, Description = model.Description, Type = model.Type, IsPublic = model.IsPublic, IsShow = model.IsShow, IsEditor = model.IsEditor, EditorCode = model.EditorCode, RoleIds = model.RoleIds, CreatedBy = CurrentUser.UserId.Value }; if (model.ThumbnailFile != null) { var filename = FileMethod.SaveFile(model.ThumbnailFile, Server.MapPath("~/img/kmc-thumbnail")); 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 <int>(HttpVerbs.Post, $"KMC/Manage", 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/" + response.Data.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, "Create KMC", model); TempData["SuccessMessage"] = Language.KMC.AlertSuccessCreate; return(RedirectToAction("List", "Manage", new { area = "KMC", @id = model.CategoryId })); } else { TempData["ErrorMessage"] = Language.KMC.AlertFailCreate; } } model.filter_imgs = filter_imgs; model.filter_videos = filter_videos; model.filter_audios = filter_audios; model.filter_docs = filter_docs; return(View(model)); }