public async Task <IActionResult> PutAsync([FromQuery] int id, [FromBody] DTOMilestone dTOMilestone)
        {
            try
            {
                if (id <= 0)
                {
                    eventLogger.LogWarning("Invalid Id!, Does not have required details to add into Milestones");
                    return(BadRequest("Invalid Id :" + dTOMilestone));
                }
                if (dTOMilestone == null || !dTOMilestone.IsValid())
                {
                    eventLogger.LogWarning("Invalid milestone!, Does not have required details to add into Milestones, " +
                                           "Request details are :" + this.Request.ToString());
                    return(BadRequest("Invalid Milestone :" + dTOMilestone));
                }

                var milestone = await milestoneRepository.GetAsync(id);

                milestone.TargetDate = dTOMilestone.EndDateTime;

                await milestoneRepository.SaveAsync();

                return(NoContent());
            }
            catch (Exception ex)
            {
                eventLogger.LogError("An exception while processing Milestone's Post request. ", ex);
                return(StatusCode(StatusCodes.Status500InternalServerError, this.Request.ToString()));
            }
        }
        public async Task <IActionResult> PostAsync([FromBody] DTOMilestone dTOMilestone)
        {
            try
            {
                if (dTOMilestone == null || !dTOMilestone.IsValid())
                {
                    eventLogger.LogWarning("Invalid milestone!, Does not have required details to add into Milestones, " +
                                           "Request details are :" + this.Request.ToString());
                    return(BadRequest("Invalid Milestone :" + dTOMilestone));
                }

                var mappedMilestone = mapper.Map <Milestone>(dTOMilestone);
                var created         = await milestoneRepository.AddAsync(mappedMilestone);

                if (created)
                {
                    await milestoneRepository.SaveAsync();

                    return(CreatedAtAction("Post", dTOMilestone));
                }
                else
                {
                    return(BadRequest("Invalid Milestone :" + dTOMilestone));
                }
            }
            catch (Exception ex)
            {
                eventLogger.LogError("An exception while processing Milestone's Post request. ", ex);
                return(StatusCode(StatusCodes.Status500InternalServerError, this.Request.ToString()));
            }
        }