public async Task <int> AddProjectActivityPlan(ProjectActivityPlan projectactivityplan) { string mailSent = ""; string MailSubject = "Delay in Activity Completion"; string MailBody = "Following Activity is delayed to complete as per plan."; int insertedprojectplanid = 0; int projectplanid = 0; if (!IsProjectPlanExist(projectactivityplan.ProjectID)) { projectplanid = await ProjectPlanRepository.AddProjectPlan(new ProjectPlan { ProjectID = projectactivityplan.ProjectID, ProjectPlanStatus = "Created", ReopenReason = "", CreatedDate = projectactivityplan.CreatedDate, CreatedBy = projectactivityplan.CreatedBy }); } else { projectplanid = projectactivityplan.ProjectPlanID; } if (!IsActivitiesExist(projectplanid, projectactivityplan.Activity)) { if (!IsParentExist(projectplanid, projectactivityplan.ParentID)) { string strTemplateID = this.GetTemplateID(projectplanid, projectactivityplan.Activity, projectactivityplan.ParentID, true); insertedprojectplanid = await ProjectActivityPlanRepository.AddProjectActivityPlan(new ProjectActivityPlan { ProjectID = projectactivityplan.ProjectID, ProjectPlanID = projectplanid, Activity = ppParentID.ToString(), TemplateID = strTemplateID, ParentID = "0", Dependency = "", StartDate = projectactivityplan.StartDate, EndDate = projectactivityplan.EndDate, ComplitionDate = projectactivityplan.ComplitionDate, Status = projectactivityplan.Status, CreatedDate = projectactivityplan.CreatedDate, CreatedBy = projectactivityplan.CreatedBy }); } insertedprojectplanid = await ProjectActivityPlanRepository.AddProjectActivityPlan(new ProjectActivityPlan { ProjectID = projectactivityplan.ProjectID, ProjectPlanID = projectplanid, Activity = projectactivityplan.Activity, TemplateID = this.GetTemplateID(projectplanid, projectactivityplan.Activity, projectactivityplan.ParentID, false), ParentID = projectactivityplan.ParentID, Dependency = projectactivityplan.Dependency, StartDate = projectactivityplan.StartDate, EndDate = projectactivityplan.EndDate, ComplitionDate = projectactivityplan.ComplitionDate, Status = projectactivityplan.Status, CreatedDate = projectactivityplan.CreatedDate, CreatedBy = projectactivityplan.CreatedBy }); if (insertedprojectplanid > 0) { ProjectActivityPlan objprojectactivityplan = ProjectActivityPlanRepository.GetProjectActivityPlans().FirstOrDefault(c => c.ProjectID == projectactivityplan.ProjectID && c.ProjectPlanID == projectplanid && c.TemplateID == projectactivityplan.ParentID); if (objprojectactivityplan != null) { if (projectactivityplan.EndDate > objprojectactivityplan.EndDate) { objprojectactivityplan.EndDate = projectactivityplan.EndDate; int updateprojectplan = await ProjectActivityPlanRepository.UpdateProjectActivityPlan(objprojectactivityplan); } } if (projectactivityplan.EndDate < DateTime.Now) { int value; string strActivity; if (int.TryParse(projectactivityplan.Activity, out value)) { ActivityTemplate activity = ActivitiesRepository.GetActivities().FirstOrDefault(c => c.ActivityID == value); strActivity = activity.Activity; } else { strActivity = projectactivityplan.Activity; } MailBody = MailBody + "<br/><br/>" + "<b>Activity Name</b> : " + strActivity; mailSent = await Mail.SendMailActivityPlan(projectactivityplan.ProjectID, "Delay", MailSubject, MailBody); } } } return(projectplanid > 0 ? projectplanid : 0); }