Example #1
0
        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"));
        }
Example #2
0
        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"));
        }
Example #3
0
        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));
            }
        }
Example #4
0
        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"));
        }