public RestAPIUpdateDraftResponse UpdateIdeaDraft(RestAPIUpdateIdeaDraftRequest req)
        {
            RestAPIUpdateDraftResponse response = new RestAPIUpdateDraftResponse();

            ideaUtil.UpdateIdeaDraft(response, req, UserID);

            return(response);
        }
        public void UpdateIdeaDraft(RestAPIUpdateDraftResponse response, RestAPIUpdateIdeaDraftRequest request, int UserID)
        {
            try
            {
                ideautils.UpdateIdeaDraft(response, request, UserID);

                if (!request.IsDraft)
                {
                    ideautils.SubmitIdeaAssignment(response, request.IdeaId);
                    SendEmail(request.IdeaId);
                }
            }
            catch (Exception ex)
            {
                response.Status = Failure;
                throw new Exception(ex.Message, ex);
            }
        }
        public void UpdateIdeaDraft(RestAPIUpdateDraftResponse response, RestAPIUpdateIdeaDraftRequest request, int UserID)
        {
            DatabaseWrapper.databaseOperation(response,
                                              (context, query) =>
            {
                Idea idea = query.GetIdeaById(context, request.IdeaId);
                if (idea != null)
                {
                    if (!string.IsNullOrEmpty(request.Title))
                    {
                        idea.Title = request.Title;
                    }
                    if (!string.IsNullOrEmpty(request.Description))
                    {
                        idea.Description = request.Description;
                    }
                    if (!string.IsNullOrEmpty(request.BusinessImpact))
                    {
                        idea.BusinessImpact = request.BusinessImpact;
                    }
                    if (!string.IsNullOrEmpty(request.Solution))
                    {
                        idea.Solution = request.Solution;
                    }
                    if (request.ChallengeId.GetValueOrDefault(0) != 0)
                    {
                        idea.ChallengeId = request.ChallengeId;
                    }
                    if (request.CategoryId.GetValueOrDefault(0) != 0)
                    {
                        idea.CategoryId = request.CategoryId;
                    }

                    idea.IsDraft      = request.IsDraft;
                    idea.ModifiedDate = DateTime.UtcNow;

                    //insert idea status
                    IdeaStatusLog ideaStatusLog = new IdeaStatusLog()
                    {
                        CreatedDate      = DateTime.UtcNow,
                        ModifiedByUserId = UserID,
                        IsActive         = true,
                        IdeaState        = request.IsDraft ? (int)IdeaStatusTypes.SubmitPending : (int)IdeaStatusTypes.ReviewPending
                    };

                    idea.IdeaStatusLogs.Add(ideaStatusLog);

                    context.SubmitChanges();
                    response.Status = Success;
                }
                else
                {
                    response.ErrorList.Add(Faults.IdeaNotFound);
                    response.Status = Failure;
                }
            }
                                              , readOnly: false
                                              );

            if (response == null && response.ErrorList.Count != 0)
            {
                response.ErrorList.Add(Faults.ServerIsBusy);
            }
        }