public async Task <bool> UpdateSkill(MentorSkillAddDTO updateSkillDTO)
        {
            try
            {
                var user = await userManager.FindByEmailAsync(updateSkillDTO.Email);

                var tech  = context.Technologies.Find(updateSkillDTO.TechID);
                var skill = context.MentorSkills.Where(skill => skill.TechId == updateSkillDTO.TechID).FirstOrDefault();
                if (user == null || skill == null)
                {
                    return(false);
                }

                skill.StartDate      = updateSkillDTO.StartDate;
                skill.EndDate        = updateSkillDTO.EndDate;
                skill.SkillSurcharge = updateSkillDTO.SkillSurcharge;
                skill.TotalFee       = Convert.ToDecimal(tech.BasicFee * (1 + 0.01 * (tech.Commission + updateSkillDTO.SkillSurcharge)));

                int result = context.SaveChanges(); // returns number of changes
                if (result > 0)
                {
                    return(true);
                }
                return(false);
            }
            catch (Exception e)
            {
                throw e;
            }
        }
 public IActionResult Post([FromBody] MentorSkillAddDTO addSkillDTO)
 {
     try
     {
         if (!ModelState.IsValid)
         {
             return(BadRequest(ModelState));
         }
         var result = repository.AddSkill(addSkillDTO);
         if (result.Result == 1)
         {
             return(Created("AddSkill", new { Message = $"{addSkillDTO.Name} added to your skills successfully" }));
         }
         else if (result.Result == 3)
         {
             return(BadRequest(new
             {
                 Message = $"Duplicate skill entry, {addSkillDTO.Name} is already added to your skills. Check My Skills."
             }));
         }
         return(BadRequest(result));
     }
     catch (Exception e)
     {
         return(BadRequest(e));
     }
 }
        public async Task <int> AddSkill(MentorSkillAddDTO addSkillDTO)
        {
            try
            {
                var user = await userManager.FindByEmailAsync(addSkillDTO.Email);

                var tech = context.Technologies.Find(addSkillDTO.TechID);
                if (user == null || tech == null)
                {
                    return(2);
                }
                var isDublicate = context.MentorSkills.Where(ms => ms.User == user && ms.TechId == tech.TechId).FirstOrDefault();
                if (isDublicate == null)
                {
                    MentorSkill skill = new MentorSkill
                    {
                        User           = user,
                        TechId         = tech.TechId,
                        StartDate      = addSkillDTO.StartDate,
                        EndDate        = addSkillDTO.EndDate,
                        SkillSurcharge = addSkillDTO.SkillSurcharge,
                        TotalFee       = Convert.ToDecimal(tech.BasicFee * (1 + 0.01 * (tech.Commission + addSkillDTO.SkillSurcharge))),
                        Status         = true
                    };
                    context.MentorSkills.Add(skill);
                    int result = context.SaveChanges(); // returns number of changes
                    if (result > 0)
                    {
                        return(1); // success
                    }
                    return(2);     // error
                }
                else
                {
                    return(3); // duplicate request
                }
            }
            catch (Exception e)
            {
                throw e;
            }
        }
 public IActionResult Put([FromBody] MentorSkillAddDTO mentorSkillUpdateDTO)
 {
     try
     {
         if (!ModelState.IsValid)
         {
             return(BadRequest(ModelState));
         }
         var result = repository.UpdateSkill(mentorSkillUpdateDTO);
         if (result.Result)
         {
             return(Created("UpdateSkill", new { Message = $"{mentorSkillUpdateDTO.Name} updated successfully" }));
         }
         return(BadRequest(new { Error = result, Message = $"Failed to update, {mentorSkillUpdateDTO.Name}. Please try again later!" }));
     }
     catch (Exception e)
     {
         return(BadRequest(new { Message = $"Failed to update, {mentorSkillUpdateDTO.Name}. Please try again later!" }));
     }
 }