public async Task <IActionResult> DeleteSkillFromContact([FromRoute] int contactID, [FromRoute] int skillID) { if (!ModelState.IsValid) { return(BadRequest(ModelState)); } var identity = HttpContext.User.Identity as ClaimsIdentity; if (identity != null) { if (!(identity.Claims.FirstOrDefault().Value == contactID.ToString() || identity.Claims.FirstOrDefault().Value == "Administrator")) { return(BadRequest("You do not have permission to access this api")); } } ContactSkillExpertiseModel skill = _context.ContactSkillExpertise.FirstOrDefault(x => x.SkillId == skillID && contactID == x.ContactId); if (skill == null) { return(NotFound("Record Not found")); } _context.ContactSkillExpertise.Remove(skill); try { await _context.SaveChangesAsync(); } catch (Exception e) { return(BadRequest(e.InnerException.Message)); } return(Ok("Success")); }
public async Task <IActionResult> PostContact([FromBody] ContactInputModel contact) { //In this api we are using this type of model that complicates the code, because swagger generates the // scheme in the documentation more precise with this one if (!ModelState.IsValid) { return(BadRequest(ModelState)); } try { ICollection <ContactSkillExpertiseModel> ContactSkillList = new HashSet <ContactSkillExpertiseModel>(); foreach (var item in contact.ContactSkillExpertise) { ContactSkillExpertiseModel ContactSkill = new ContactSkillExpertiseModel(); //ContactSkill.ContactId = item.ContactId; ContactSkill.ExpertiseLvlid = item.ExpertiseLvlid; ContactSkill.SkillId = item.SkillId; ContactSkillList.Add(ContactSkill); } _context.Contact.Add(new ContactModel() { Firstname = contact.Firstname, Lastname = contact.Lastname, Fullname = contact.Fullname, Email = contact.Email, Address = contact.Address, MobileNum = contact.MobileNum, ContactSkillExpertise = ContactSkillList }); await _context.SaveChangesAsync(); } catch (Exception e) { return(BadRequest(e.InnerException.Message)); } return(Ok("Success")); }
public async Task <IActionResult> EditSkillOfContact([FromRoute] int ContactSkillID, [FromBody] ContactSkillExpertiseModel skill) { if (!ModelState.IsValid) { return(BadRequest(ModelState)); } var identity = HttpContext.User.Identity as ClaimsIdentity; if (identity != null) { if (!(identity.Claims.FirstOrDefault().Value == skill.ContactId.ToString() || identity.Claims.FirstOrDefault().Value == "Administrator")) { return(BadRequest("You do not have permission to access this api")); } } if (ContactSkillID != skill.ContactSkillId) { return(BadRequest("No SkillID is added or the added one is wrong")); } var valueForUpdate = _context.ContactSkillExpertise.FirstOrDefault(u => u.ContactId == skill.ContactId && u.SkillId == skill.SkillId); if (valueForUpdate != null) { if (valueForUpdate.ContactSkillId == skill.ContactSkillId) { valueForUpdate.ExpertiseLvlid = skill.ExpertiseLvlid; _context.ContactSkillExpertise.Update(valueForUpdate); } else { return(BadRequest("The skill that you try to modify is already possessed by the user and it is not the record that you try to modify")); } } else { return(BadRequest("Wrong information provided to the request")); } try { await _context.SaveChangesAsync(); return(Ok("Success")); } catch (Exception e) { return(BadRequest(e.InnerException.Message)); } }
public async Task <IActionResult> PutContact([FromRoute] int id, [FromBody] ContactEditModel contact) { //In this api we are using this type of model that complicates the code, because swagger generates the // scheme in the documentation more precise with this one if (!ModelState.IsValid) { return(BadRequest(ModelState)); } var identity = HttpContext.User.Identity as ClaimsIdentity; if (identity != null) { IEnumerable <Claim> claims = identity.Claims; if (!(claims.FirstOrDefault().Value == id.ToString() || claims.FirstOrDefault().Value == "Administrator")) { return(BadRequest("You do not have permission to edit this Contact")); } } if (id != contact.ContactId) { return(BadRequest("No contactID added or the added one is wrong")); } var existingSkills = from u in _context.ContactSkillExpertise where u.ContactId == id select u; foreach (var item in existingSkills) { _context.ContactSkillExpertise.Remove(item); } foreach (var item in contact.ContactSkillExpertise) { if (_context.Skills.FirstOrDefault(x => x.SkillId == item.SkillId) == null) { return(BadRequest("One of the skills you are trying to add or modify does not exist as a base skill")); } ICollection <ContactSkillExpertiseModel> ContactSkillList = new HashSet <ContactSkillExpertiseModel>(); foreach (var itemm in contact.ContactSkillExpertise) { ContactSkillExpertiseModel ContactSkill = new ContactSkillExpertiseModel(); ContactSkill.ExpertiseLvlid = itemm.ExpertiseLvlid; ContactSkill.SkillId = itemm.SkillId; ContactSkillList.Add(ContactSkill); } _context.Contact.Update(new ContactModel() { ContactId = contact.ContactId, Firstname = contact.Firstname, Lastname = contact.Lastname, Fullname = contact.Fullname, Email = contact.Email, Address = contact.Address, MobileNum = contact.MobileNum, ContactSkillExpertise = ContactSkillList }); } try { await _context.SaveChangesAsync(); } catch (Exception e) { if (!ContactExists(id)) { return(NotFound("The record with id " + id + " does not exist in the database")); } else { return(NotFound(e.InnerException.Message)); } } return(Ok("Success")); }