public ActionResult Edit(CaseProgressNote caseprogressnote, int caseID, int?caseMemberID)
        {
            caseprogressnote.LastUpdatedByWorkerID = CurrentLoggedInWorker.ID;
            try
            {
                //if (caseprogressnote.NoteDate > DateTime.Today)
                //{
                //    throw new CustomException("Note date can't be future date.");
                //}
                //validate data
                if (ModelState.IsValid)
                {
                    //<JL:Comment:No need to check access again on post. On edit we are already checking permission.>
                    //if (caseprogressnote.ID > 0 && caseprogressnote.CreatedByWorkerID != CurrentLoggedInWorker.ID && CurrentLoggedInWorkerRoleIDs.IndexOf(1) == -1 && (CurrentLoggedInWorkerRoleIDs.IndexOf(SiteConfigurationReader.RegionalManagerRoleID) == -1))
                    //{
                    //    WebHelper.CurrentSession.Content.ErrorMessage = "You are not eligible to do this action";
                    //    //return Json(new { success = true, url = Url.Action(Constants.Actions.AccessDenied, Constants.Controllers.Home, new { Area = String.Empty }) });
                    //    return RedirectToAction(Constants.Actions.AccessDenied, Constants.Controllers.Home, new { Area = String.Empty });
                    //}
                    //</JL:Comment:07/08/2017>

                    //call the repository function to save in database
                    caseprogressnoteRepository.InsertOrUpdate(caseprogressnote);
                    caseprogressnoteRepository.Save();
                    if (caseprogressnote.CaseMembersIds != null && caseprogressnote.CaseMembersIds.Count() > 0)
                    {
                        foreach (var item in caseprogressnote.CaseMembersIds)
                        {
                            CaseProgressNoteMembers caseProgressNoteMembers = new CaseProgressNoteMembers();
                            caseProgressNoteMembers.CaseMemberID       = Convert.ToInt32(item);
                            caseProgressNoteMembers.CaseProgressNoteID = Convert.ToInt32(caseprogressnote.ID);
                            caseProgressNoteMembersRepository.InsertOrUpdate(caseProgressNoteMembers);
                            caseProgressNoteMembersRepository.Save();
                        }
                    }

                    //redirect to list page after successful operation
                    if (caseprogressnote.IsInitialContact)
                    {
                        return(RedirectToAction(Constants.Actions.InitialContact, new { caseID = caseprogressnote.CaseID }));
                    }
                    else
                    {
                        return(RedirectToAction(Constants.Actions.Edit, new { noteID = caseprogressnote.ID, caseID = caseprogressnote.CaseID }));
                    }
                }
                else
                {
                    foreach (var modelStateValue in ViewData.ModelState.Values)
                    {
                        foreach (var error in modelStateValue.Errors)
                        {
                            caseprogressnote.ErrorMessage = error.ErrorMessage;
                            break;
                        }
                        if (caseprogressnote.ErrorMessage.IsNotNullOrEmpty())
                        {
                            break;
                        }
                    }
                }
            }
            catch (CustomException ex)
            {
                caseprogressnote.ErrorMessage = ex.UserDefinedMessage;
            }
            catch (Exception ex)
            {
                ExceptionManager.Manage(ex);
                caseprogressnote.ErrorMessage = Constants.Messages.UnhandelledError;
            }
            if (caseMemberID.HasValue && caseMemberID.Value > 0)
            {
                caseprogressnote.CaseMemberID = caseMemberID.Value;
                CaseMember caseMember = casememberRepository.Find(caseprogressnote.CaseMemberID);
                if (caseMember != null)
                {
                    ViewBag.DisplayID = caseMember.DisplayID;
                }
            }
            else
            {
                Case varCase = caseRepository.Find(caseID);
                if (varCase != null)
                {
                    ViewBag.DisplayID = varCase.DisplayID;
                }
            }
            //return view with error message if the operation is failed
            return(View(caseprogressnote));
        }
        public ActionResult SaveAjax(CaseProgressNote caseprogressnote)
        {
            //id=0 means add operation, update operation otherwise
            bool isNew = caseprogressnote.ID == 0;

            //validate data
            if (ModelState.IsValid)
            {
                if (caseprogressnote.NoteDate > DateTime.Today)
                {
                    throw new CustomException("Note date can't be future date.");
                }
                try
                {
                    //<JL:Comment:No need to check access again on post. On edit we are already checking permission.>
                    //if (caseprogressnote.ID > 0 && caseprogressnote.CreatedByWorkerID != CurrentLoggedInWorker.ID && CurrentLoggedInWorkerRoleIDs.IndexOf(1) == -1 && (CurrentLoggedInWorkerRoleIDs.IndexOf(SiteConfigurationReader.RegionalManagerRoleID) == -1))
                    //{
                    //    WebHelper.CurrentSession.Content.ErrorMessage = "You are not eligible to do this action";
                    //    return Json(new { success = true, url = Url.Action(Constants.Actions.AccessDenied, Constants.Controllers.Home, new { Area = String.Empty }) });
                    //    //return RedirectToAction(Constants.Actions.AccessDenied, Constants.Controllers.Home, new { Area = String.Empty });
                    //}
                    //</JL:Comment:07/08/2017>

                    caseprogressnote.LastUpdatedByWorkerID = CurrentLoggedInWorker.ID;
                    caseprogressnoteRepository.InsertOrUpdate(caseprogressnote);
                    caseprogressnoteRepository.Save();
                    //Audit log
                    var caseprogressmembers = caseProgressNoteMembersRepository.SearchMembers(caseprogressnote.ID);
                    foreach (var item in caseprogressmembers)
                    {
                        caseProgressNoteMembersRepository.Delete(item);
                    }
                    if (caseprogressnote.CaseMembersIds != null && caseprogressnote.CaseMembersIds.Count() > 0)
                    {
                        foreach (var item in caseprogressnote.CaseMembersIds)
                        {
                            CaseProgressNoteMembers caseProgressNoteMembers = new CaseProgressNoteMembers();
                            caseProgressNoteMembers.CaseMemberID       = Convert.ToInt32(item);
                            caseProgressNoteMembers.CaseProgressNoteID = Convert.ToInt32(caseprogressnote.ID);
                            caseProgressNoteMembersRepository.InsertOrUpdate(caseProgressNoteMembers);
                            caseProgressNoteMembersRepository.Save();
                        }
                    }


                    if (isNew)
                    {
                        caseprogressnote.SuccessMessage = "Case Progress Note has been added successfully";
                    }
                    else
                    {
                        caseprogressnote.SuccessMessage = "Case Progress Note has been updated successfully";
                    }
                }
                catch (CustomException ex)
                {
                    caseprogressnote.ErrorMessage = ex.UserDefinedMessage;
                }
                catch (Exception ex)
                {
                    ExceptionManager.Manage(ex);
                    caseprogressnote.ErrorMessage = Constants.Messages.UnhandelledError;
                }
            }
            else
            {
                foreach (var modelStateValue in ViewData.ModelState.Values)
                {
                    foreach (var error in modelStateValue.Errors)
                    {
                        caseprogressnote.ErrorMessage = error.ErrorMessage;
                        break;
                    }
                    if (caseprogressnote.ErrorMessage.IsNotNullOrEmpty())
                    {
                        break;
                    }
                }
            }
            //return the status message in json
            if (caseprogressnote.ErrorMessage.IsNotNullOrEmpty())
            {
                return(Json(new { success = false, data = this.RenderPartialViewToString(Constants.PartialViews.Alert, caseprogressnote) }));
            }
            else
            {
                return(Json(new { success = true, data = this.RenderPartialViewToString(Constants.PartialViews.Alert, caseprogressnote) }));
            }
        }
        public ActionResult Create(CaseProgressNote caseProgressNote, int caseID, int?caseMemberID)
        {
            caseProgressNote.LastUpdatedByWorkerID = CurrentLoggedInWorker.ID;
            try
            {
                //if (caseProgressNote.NoteDate > DateTime.Today)
                //{
                //    throw new CustomException("Note date can't be future date.");
                //}

                //validate data
                if (ModelState.IsValid)
                {
                    caseProgressNote.LastUpdatedByWorkerID = CurrentLoggedInWorker.ID;
                    caseprogressnoteRepository.InsertOrUpdate(caseProgressNote);
                    caseprogressnoteRepository.Save();

                    if (caseProgressNote.IsInitialContact)
                    {
                        if (caseProgressNote.CaseMembersIds != null && caseProgressNote.CaseMembersIds.Count() > 0)
                        {
                            foreach (var item in caseProgressNote.CaseMembersIds)
                            {
                                CaseProgressNoteMembers caseProgressNoteMembers = new CaseProgressNoteMembers();
                                caseProgressNoteMembers.CaseMemberID       = Convert.ToInt32(item);
                                caseProgressNoteMembers.CaseProgressNoteID = Convert.ToInt32(caseProgressNote.ID);
                                caseProgressNoteMembersRepository.InsertOrUpdate(caseProgressNoteMembers);
                                caseProgressNoteMembersRepository.Save();
                            }
                        }
                        else
                        {
                            throw new CustomException("Select atleast one family member");
                        }
                    }
                    else
                    {
                        if (caseProgressNote.CaseMemberID > 0)
                        {
                            CaseProgressNoteMembers caseProgressNoteMembers = new CaseProgressNoteMembers();
                            caseProgressNoteMembers.CaseMemberID       = caseProgressNote.CaseMemberID;
                            caseProgressNoteMembers.CaseProgressNoteID = Convert.ToInt32(caseProgressNote.ID);
                            caseProgressNoteMembersRepository.InsertOrUpdate(caseProgressNoteMembers);
                            caseProgressNoteMembersRepository.Save();
                        }
                        else
                        {
                            throw new CustomException("Please select family or family member");
                        }
                    }
                    //Audit Log
                    if (caseProgressNote.IsInitialContact)
                    {
                        return(RedirectToAction(Constants.Actions.Index, Constants.Controllers.CaseWorker, new { caseID = caseProgressNote.CaseID, caseMemberID = caseMemberID }));
                    }
                    else
                    {
                        return(RedirectToAction(Constants.Actions.Edit, new { noteID = caseProgressNote.ID, caseID = caseProgressNote.CaseID, caseMemberID = caseMemberID }));
                    }
                }
                else
                {
                    foreach (var modelStateValue in ViewData.ModelState.Values)
                    {
                        foreach (var error in modelStateValue.Errors)
                        {
                            caseProgressNote.ErrorMessage = error.ErrorMessage;
                            break;
                        }
                        if (caseProgressNote.ErrorMessage.IsNotNullOrEmpty())
                        {
                            break;
                        }
                    }
                }
            }
            catch (CustomException ex)
            {
                caseProgressNote.ErrorMessage = ex.UserDefinedMessage;
            }
            catch (Exception ex)
            {
                ExceptionManager.Manage(ex);
                caseProgressNote.ErrorMessage = Constants.Messages.UnhandelledError;
            }
            if (caseMemberID.HasValue && caseMemberID.Value > 0)
            {
                caseProgressNote.CaseMemberID = caseMemberID.Value;
                CaseMember caseMember = casememberRepository.Find(caseProgressNote.CaseMemberID);
                if (caseMember != null)
                {
                    ViewBag.DisplayID = caseMember.DisplayID;
                }
            }
            else
            {
                Case varCase = caseRepository.Find(caseID);
                if (varCase != null)
                {
                    ViewBag.DisplayID = varCase.DisplayID;
                }
            }
            return(View(caseProgressNote));
        }