Beispiel #1
0
        public bool AddProjectSkillResource(ProjectSkillResourceRequest request)
        {
            bool status = false;

            try
            {
                ProjectSkillResource psr = new ProjectSkillResource();
                psr.projectId              = request.projectId;
                psr.skillId                = request.skillId;
                psr.competencyLevelId      = request.competencyLevelId;
                psr.expectedResourceCount  = request.expectedResourceCount;
                psr.availableResourceCount = request.availableResourceCount;
                SqlSvrDAL dal = new SqlSvrDAL(request.ClientInfo);
                status = dal.AddProjectSkillResource(request.projectId, psr);
            }
            catch (Exception ex)
            {
                //LogHelper.AddLog("ProjectController,AddProjectSkillResource", ex.Message, ex.StackTrace, "HCL.Academy.Service", request.ClientInfo.emailId);
                TelemetryClient telemetry = new TelemetryClient();
                telemetry.TrackException(ex);
            }
            return(status);
        }
        /// <summary>
        /// Checks whether the Project Details were uploaded successfully.
        /// </summary>
        /// <param name="projects"></param>
        /// <param name="projectskills"></param>
        /// <param name="projectskillresources"></param>
        /// <param name="logText"></param>
        /// <returns></returns>
        //private bool InsertProjectFromExcel(List<Project> projects, List<ProjectSkill> projectskills,
        //    List<ProjectSkillResource> projectskillresources, ref StringBuilder logText)
        private async Task <MultiReturnValue> InsertProjectFromExcel(List <Project> projects, List <ProjectSkill> projectskills,
                                                                     List <ProjectSkillResource> projectskillresources)
        {
            //IDAL dal = (new DALFactory()).GetInstance();
            InitializeServiceClient();
            //bool result = false;
            MultiReturnValue mrv = new MultiReturnValue();

            try
            {
                List <Project>              allProjects             = null;
                List <ProjectSkill>         allProjectSkills        = null;
                List <ProjectSkillResource> allProjectSkillResource = null;
                /*Code for Service*/
                HttpResponseMessage response = null;
                foreach (Project project in projects)
                {
                    //dal.AddProject(project.projectName);
                    response = await client.PostAsJsonAsync("Project/AddProject?projectName=" + project.projectName, req);

                    mrv.LogText.Append("<tr><td class='success'>The Project : <span class='bold'>" + project.projectName + "</span> added successfully to the list Projects.</td></tr>");
                }

                //allProjects = dal.GetAllProjects();     //List of all Projects
                response = await client.PostAsJsonAsync("Project/GetAllProjects", req);

                allProjects = await response.Content.ReadAsAsync <List <Project> >();

                //allProjectSkills = dal.GetAllProjectSkills();       //List of all Project Skills
                response = await client.PostAsJsonAsync("Project/GetAllProjectSkills", req);

                allProjectSkills = await response.Content.ReadAsAsync <List <ProjectSkill> >();

                mrv.LogText.Append("<tr><td>&nbsp;</td></tr>");
                foreach (ProjectSkill proskill in projectskills)
                {
                    List <ProjectSkill> objProSkill = allProjectSkills.Where(item => item.project == proskill.project && item.skill == proskill.skill).ToList();
                    if (objProSkill != null && objProSkill.Count > 0)
                    {
                        // project & skill combination already exists
                        mrv.LogText.Append("<tr><td class='error'>Project :<span class='bold'>" + objProSkill.FirstOrDefault().project + "</span>Skill : <span class='bold'>" + objProSkill.FirstOrDefault().skill + "</span> is already present in ProjectSkill list.<td><tr>");
                    }
                    else // add project skill
                    {
                        List <Project> project = allProjects.Where(item => item.projectName == proskill.project).ToList();
                        if (project != null && project.Count > 0)
                        {
                            //dal.AddProjectSkill(
                            //    allProjects.Where(item => item.projectName == proskill.project).FirstOrDefault().id,
                            //    proskill.skillId);

                            //AddProjectSkill(RequestBase req, int ProjectID, int SkillID)
                            response = await client.PostAsJsonAsync("Project/AddProjectSkill?ProjectID=" + project[0].id + "&SkillID=" + proskill.skillId, req);

                            mrv.LogText.Append("<tr><td class='success'>Project : <span class='bold'>" + proskill.project + "</span> and Skill : <span class='bold'>" + proskill.skill + "</span> added successfully to the list ProjectSkills.</td></tr>");
                        }
                        else
                        {
                            // project doesn't exist in Project list
                            // So it can't be added to project skill
                            mrv.LogText.Append("<tr><td class='error'>Project :<span class='bold'>" + proskill.project + "</span>is not available in Project list so It can't be added to ProjectSkill<td><tr>");
                        }
                    }
                }

                //allProjectSkillResource = dal.GetAllProjectSkillResources();
                response = await client.PostAsJsonAsync("Project/GetAllProjectSkillResources", req);

                allProjectSkillResource = await response.Content.ReadAsAsync <List <ProjectSkillResource> >();

                response = null;
                response = await client.PostAsJsonAsync("Skill/GetAllSkills", req);

                List <Skill> allSkills = await response.Content.ReadAsAsync <List <Skill> >();

                mrv.LogText.Append("<tr><td>&nbsp;</td></tr>");
                ProjectSkillResourceRequest req1 = new ProjectSkillResourceRequest();
                foreach (ProjectSkillResource skillResource in projectskillresources)
                {
                    List <Project> project = allProjects.Where(item => item.projectName == skillResource.projectName).ToList();
                    List <Skill>   skill   = allSkills.Where(x => x.SkillName == skillResource.skill).ToList();

                    if (project != null && project.Count > 0)
                    {
                        int projectid = project != null && project.Count() > 0 ? project.FirstOrDefault().id : -1;
                        int skillid   = skill != null && skill.Count() > 0 ? skill.FirstOrDefault().SkillId : -1;
                        List <ProjectSkillResource> objProSkillResource = allProjectSkillResource.Where(item => item.projectId == projectid && item.skillId == skillResource.skillId && item.competencyLevelId == skillResource.competencyLevelId).ToList();


                        //List<ProjectSkillResource> objProSkillResource = await response.Content.ReadAsAsync<List<ProjectSkillResource>>();

                        if (objProSkillResource != null && objProSkillResource.Count() > 0 && objProSkillResource[0].expectedResourceCount != 0 && objProSkillResource[0].availableResourceCount != 0)
                        {
                            // Item already exist
                            // Can't be added again
                            mrv.LogText.Append("<tr><td class='error'>Project :<span class='bold'>" + skillResource.projectName + "</span> Skill : <span class='bold'>" + skillResource.skill + "</span>, Competency Level : <span class='bold'>" + skillResource.competencyLevel + "</span> already exists in ProjectSkillResource list.<td><tr>");
                        }
                        else
                        {
                            //dal.AddProjectSkillResource(allProjects.Where(item => item.projectName == skillResource.projectName).FirstOrDefault().id,skillResource);

                            req1.skillId                = skillid;
                            req1.projectId              = projectid;
                            req1.competencyLevelId      = skillResource.competencyLevelId;
                            req1.availableResourceCount = skillResource.availableResourceCount;
                            req1.expectedResourceCount  = skillResource.expectedResourceCount;
                            response = await client.PostAsJsonAsync("Project/AddProjectSkillResource", req1);

                            mrv.LogText.Append("<tr><td class='success'>Project : " + skillResource.projectName + " Skill : " + skillResource.skill + " and Competency Level : " + skillResource.competencyLevel + " added successfully to the list ProjectSkillResource. </td></tr>");
                        }
                    }
                    else
                    {
                        // Can't be added
                        // Project doesn't exist
                        mrv.LogText.Append("<tr><td class='error'>Project is not available for combination, Project :<span class='bold'>" + skillResource.projectName + "</span> Skill : <span class='bold'>" + skillResource.skill + "</span>, Competency Level : <span class='bold'>" + skillResource.competencyLevel + "</span>. So it can't be added to ProjectSkillResource<td><tr>");
                    }
                }
                mrv.Result = true;
                //result = true;
            }
            catch (Exception ex)
            {
                //UserManager user = (UserManager)Session["CurrentUser"];
                //LogHelper.AddLog("ImportsProjectController", ex.Message, ex.StackTrace, "HCL.Academy.Web", user.EmailID);
                TelemetryClient telemetry = new TelemetryClient();
                telemetry.TrackException(ex);

                mrv.Result = false;
            }
            //return result;
            return(mrv);
        }