public void Post_WithValidData_Succeeds() { using (var controller = ResolveController <SkillController>()) { var skillEntityModel = new UserSkillEntityModel() { SkillName = "New Skill", UserId = 1, Description = "some random description", DisplayOrder = 1, ExternalUrl = "" }; var response = controller.Post(skillEntityModel); Assert.IsTrue(response.GetValue <bool>("Success")); } }
public IHttpActionResult Post(UserSkillEntityModel model) { if (!ModelState.IsValid) { return(BadRequest()); } var currentUser = ApplicationContext.Current.CurrentUser; //if it's admin, we can safely change the customer id otherwise we'll save skill as logged in user var isAdmin = currentUser.IsAdministrator(); if (!isAdmin && model.UserId > 0) { model.UserId = currentUser.Id; } if (model.SystemSkill && isAdmin) { model.UserId = 0; } else { model.UserId = currentUser.Id; } var mediaIds = model.MediaId?.ToList() ?? new List <int>(); //get all medias var medias = _mediaService.Get(x => mediaIds.Contains(x.Id) && x.UserId == currentUser.Id).ToList(); //get skill, 1.) by id 2.) by name 3.) create new otherwise var skill = _skillService.Get(model.Id) ?? (_skillService.FirstOrDefault(x => x.Name == model.SkillName) ?? new Skill() { DisplayOrder = model.DisplayOrder, UserId = currentUser.Id, Name = model.SkillName }); //should we add this? if (skill.Id == 0) { _skillService.Insert(skill); } else { if (model.SystemSkill && isAdmin) { skill.Name = model.SkillName; _skillService.Update(skill); } } //if user id is not 0, attach this skill with user if (model.UserId != 0) { var userSkill = model.UserSkillId > 0 ? _userSkillService.Get(model.UserSkillId) : new UserSkill() { UserId = model.UserId, SkillId = skill.Id, Description = model.Description, DisplayOrder = model.DisplayOrder, ExternalUrl = model.ExternalUrl }; if (userSkill.Id == 0) { _userSkillService.Insert(userSkill); } else { _userSkillService.Update(userSkill); } //attach media if it exists foreach (var media in medias) { _mediaService.AttachMediaToEntity(userSkill, media); } return(RespondSuccess(new { Skill = userSkill.ToModel(_mediaService, _mediaSettings, _generalSettings) })); } return(RespondSuccess(new { Skill = skill.ToModel() })); }
public IHttpActionResult Post(UserSkillEntityModel model) { if (!ModelState.IsValid) { return(BadRequest()); } var currentUser = _workContext.CurrentCustomer; //if it's admin, we can safely change the customer id otherwise we'll save skill as logged in user var isAdmin = currentUser.IsAdmin(); if (!isAdmin && model.UserId > 0) { model.UserId = currentUser.Id; } if (model.SystemSkill && isAdmin) { model.UserId = 0; } else { model.UserId = currentUser.Id; } var mediaIds = model.MediaId?.ToList() ?? new List <int>(); //get all medias var medias = _mediaService.Get(x => mediaIds.Contains(x.Id) && x.UserId == currentUser.Id).ToList(); //get skill, 1.) by id 2.) by name 3.) create new otherwise var skill = _skillService.GetById(model.Id) ?? (_skillService.FirstOrDefault(x => x.Name == model.SkillName) ?? new Skill() { DisplayOrder = model.DisplayOrder, UserId = currentUser.Id, Name = model.SkillName, Description = model.Description }); //should we add this? if (skill.Id == 0) { _skillService.Insert(skill); } else { if (model.SystemSkill && isAdmin) { skill.Name = model.SkillName; skill.Description = model.Description; _skillService.Update(skill); } } //if user id is not 0, attach this skill with user if (model.UserId != 0) { //but first check if this skill has already been assigned to user or not if (model.UserSkillId == 0) { var savedSkill = _userSkillService.FirstOrDefault(x => x.SkillId == skill.Id); if (savedSkill != null) { //the skill is already part of user, we won't add it again return(Response(new { Success = false, Message = "The skill has already been added to this profile" })); } } var userSkill = model.UserSkillId > 0 ? _userSkillService.GetById(model.UserSkillId) : new UserSkill() { UserId = model.UserId, SkillId = skill.Id, Description = model.Description, DisplayOrder = model.DisplayOrder, ExternalUrl = model.ExternalUrl }; if (userSkill.Id == 0) { _userSkillService.Insert(userSkill); } else { _userSkillService.Update(userSkill); } //attach media if it exists foreach (var media in medias) { _mediaService.AttachMediaToEntity(userSkill, media); } return(Response(new { Success = true, Skill = userSkill.ToModel(_mediaService, _mediaSettings, _workContext, _storeContext, _userService, _customerProfileViewService, _customerProfileService, _pictureService, Url, _webHelper) })); } return(Response(new { Success = true, Skill = skill.ToModel(_workContext) })); }