diff --git a/DZDFreeTim.Business/Abstract/IEmployeeService.cs b/DZDFreeTim.Business/Abstract/IEmployeeService.cs new file mode 100644 index 0000000..5de77ae --- /dev/null +++ b/DZDFreeTim.Business/Abstract/IEmployeeService.cs @@ -0,0 +1,23 @@ +using DZDFreeTim.Data.Entity; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + + + +namespace DZDFreeTim.Business.Abstract +{ + public interface IEmployeeService + { + List GetAllEmployee(); + Employee GetEmployeeById(int id); + Employee CreateEmployee(Employee employee); + Employee UpdateEmployee(Employee employee); + void DeleteEmployee(int id); + + + + } +} \ No newline at end of file diff --git a/DZDFreeTim.Business/Concrete/EmployeeManager.cs b/DZDFreeTim.Business/Concrete/EmployeeManager.cs index 30cf557..a49aea0 100644 --- a/DZDFreeTim.Business/Concrete/EmployeeManager.cs +++ b/DZDFreeTim.Business/Concrete/EmployeeManager.cs @@ -1,4 +1,7 @@ using DataAccessLayer.Concrete; +using DZDFreeTim.Business.Abstract; +using DZDFreeTim.Data.Abstract; +using DZDFreeTim.Data.Concreate; using DZDFreeTim.Data.Entity; using System; using System.Collections.Generic; @@ -8,12 +11,74 @@ namespace DZDFreeTim.Business.Concrete { - public class EmployeeManager + public class EmployeeManager : IEmployeeService { Repository repoEmployee = new Repository(); + + public List projects = new List(); + public int[] quarterProjectBonus = new int[4]; // Her çeyrek için ayrı bonus tutan array. + + public List ITSMs = new List(); + public int[] quarterITSMBonus = new int[4]; + + ProjectManager projectm = new ProjectManager(); + ITSMManager itsmm = new ITSMManager(); + + // + + private IEmployeeRepository employeeRepository; + public EmployeeManager() + { + employeeRepository = new EmployeeRepository(); + } + public Employee CreateEmployee(Employee employee) + { + return employeeRepository.CreateEmployee(employee); + } + + + + public void DeleteEmployee(int id) + { + employeeRepository.DeleteEmployee(id); + } + + + + public List GetAllEmployee() + { + return employeeRepository.GetAllEmployee(); + } + + + + public Employee GetEmployeeById(int id) + { + return employeeRepository.GetEmployeeById(id); + } + + + + public Employee UpdateEmployee(Employee employee) + { + return employeeRepository.UpdateEmployee(employee); + } + + + + + + + + // + + public List GetAll() + { + return repoEmployee.List(); + } public string GetNameById(int id) { - var employee= repoEmployee.GetById(id); + var employee = repoEmployee.GetById(id); if (employee == null) { return String.Empty; @@ -29,17 +94,346 @@ public string GetEmailById(int id) } return employee.Email; } + public DateTime GetEmployementDateById(int id) + { + var employee = repoEmployee.GetById(id); + if (employee == null) + { + return DateTime.MinValue; + } + return employee.EmployementDate; + } + public int CalculateBonusForProjects(int id, int projectMultiplier) + { + var employee = repoEmployee.GetById(id); + var project = projectm.GetAll(); + int ProjectID = 99; + if (employee.EmployeeType == "developer") + ProjectID = 0; + else if (employee.EmployeeType == "analyst") + ProjectID = 1; + int FinishedProjects = 0; + int bonus; + int projectCapacity = 0; + DateTime employeeStartingDate = new DateTime(); + employeeStartingDate = employee.EmployementDate.Date; // Resource başlangıç tarihi + + if (employee == null) + { + return 0; + } + else + { + foreach (var p in project) + { + if (p.DzdStatus == 14 || p.DzdStatus == 15 || p.DzdStatus == 16 || p.DzdStatus == 17) + { + if (ProjectID == 0) + { + if (employee.EmployeeID == p.DeveloperId) + { + if (!projects.Contains(p)) + projects.Add(p); + FinishedProjects = p.Effort + FinishedProjects; + } + } + else if (ProjectID == 1) + { + if (employee.EmployeeID == p.AnalystId) + { + if (!projects.Contains(p)) + projects.Add(p); + FinishedProjects = p.Effort + FinishedProjects; + } + } + } + } + DateTime currentDate = DateTime.Now; + string year; + string month = ""; + string quarter; + + int q1 = 0; + int q2 = 0; + int q3 = 0; + int q4 = 0; + + foreach (var p in projects) + { + int yearInt = currentDate.Year; + year = yearInt.ToString(); + if (currentDate.Month <= 3) + month = "-Q1"; + else if (currentDate.Month > 3 && currentDate.Month <= 6) + month = "-Q2"; + else if (currentDate.Month > 6 && currentDate.Month <= 9) + month = "-Q3"; + else if (currentDate.Month > 9 && currentDate.Month <= 12) + month = "-Q4"; + quarter = year + month; + if (p.BillYearQuarter == quarter) + { + q1++; + // prim hesapla quarter bonus 0.indexi arttırıp eşitle + } + else + { + currentDate.AddMonths(-3); + yearInt = currentDate.Year; + year = yearInt.ToString(); + if (currentDate.Month <= 3) + month = "-Q1"; + else if (currentDate.Month > 3 && currentDate.Month <= 6) + month = "-Q2"; + else if (currentDate.Month > 6 && currentDate.Month <= 9) + month = "-Q3"; + else if (currentDate.Month > 9 && currentDate.Month <= 12) + month = "-Q4"; + quarter = year + month; + if (p.BillYearQuarter == quarter) + { + q2++; + // prim hesabı 1.indexe eşitle + } + else + { + currentDate.AddMonths(-3); + yearInt = currentDate.Year; + year = yearInt.ToString(); + if (currentDate.Month <= 3) + month = "-Q1"; + else if (currentDate.Month > 3 && currentDate.Month <= 6) + month = "-Q2"; + else if (currentDate.Month > 6 && currentDate.Month <= 9) + month = "-Q3"; + else if (currentDate.Month > 9 && currentDate.Month <= 12) + month = "-Q4"; + quarter = year + month; + if (p.BillYearQuarter == quarter) + { + q3++; + //prim hesabı 2. indexe eşitle + } + else + { + currentDate.AddMonths(-3); + yearInt = currentDate.Year; + year = yearInt.ToString(); + if (currentDate.Month <= 3) + month = "-Q1"; + else if (currentDate.Month > 3 && currentDate.Month <= 6) + month = "-Q2"; + else if (currentDate.Month > 6 && currentDate.Month <= 9) + month = "-Q3"; + else if (currentDate.Month > 9 && currentDate.Month <= 12) + month = "-Q4"; + quarter = year + month; + if (p.BillYearQuarter == quarter) + { + q4++; + // prim hesabı 3. indexe eşitle + } + } + } + } + } + // capacitites for each quarter. + currentDate = new DateTime(DateTime.Now.Year, DateTime.Now.Month, 1, 9, 0, 0); + projectCapacity = (3) * 20; + if (q1 - projectCapacity < 0) + quarterProjectBonus[0] = 0; + else + { + bonus = (q1 - projectCapacity) * projectMultiplier; + quarterProjectBonus[0] = bonus; + } + currentDate.AddMonths(-3); + projectCapacity = (3) * 20; + if (q2 - projectCapacity < 0) + quarterProjectBonus[1] = 0; + else + { + bonus = (q2 - projectCapacity) * projectMultiplier; + quarterProjectBonus[1] = bonus; + } + currentDate.AddMonths(-3); + projectCapacity = (3) * 20; + if (q3 - projectCapacity < 0) + quarterProjectBonus[2] = 0; + else + { + bonus = (q3 - projectCapacity) * projectMultiplier; + quarterProjectBonus[2] = bonus; + } + currentDate.AddMonths(-3); // (pg - pk) * pç + projectCapacity = (3) * 20; + if (q4 - projectCapacity < 0) + quarterProjectBonus[3] = 0; + else + { + bonus = (q4 - projectCapacity) * projectMultiplier; + quarterProjectBonus[3] = bonus; + } + } + var dateNow = DateTime.Now; + var totalDays = (dateNow - employee.EmployementDate); // all time capacity + int months = totalDays.Days / 30; + projectCapacity = months * 20; + if (FinishedProjects - projectCapacity < 0) + return 0; + else + { + bonus = (FinishedProjects - projectCapacity) * projectMultiplier; + return bonus; + } + } + + public int CalculateBonusForITSMs(int id, int itsmMultiplier) + { + var employee = repoEmployee.GetById(id); + var issues = itsmm.GetAll(); + int issueCapacity = 0; + int FinishedITSMs = 0; + int bonus; + if (employee == null) + return 0; + else + { + foreach (var issue in issues) + { + if ((issue.IssueType == 1 || issue.IssueType == 3) && (issue.Resolution == 1) && (issue.Status == 1)) + { + if (employee.EmployeeID == issue.AssigneeId) + { + if (!ITSMs.Contains(issue)) + ITSMs.Add(issue); + FinishedITSMs++; + } + } + } + int q1 = 0; + int q2 = 0; + int q3 = 0; + int q4 = 0; + DateTime currentDate = DateTime.Now; + DateTime RangeDate = new DateTime(DateTime.Now.Year, DateTime.Now.Month - 3, DateTime.Now.Day, 9, 0, 0); + foreach (var issue in ITSMs) + { + string date = issue.Resolved; + int checker = 0; + string day = ""; + string month = ""; + string year = ""; + for (int i = 0; i < date.Length; i++) + { + if (date[i] == '.') + checker++; + else if (date[i] == ' ') + break; + else + { + if (checker == 0) + day += date[i]; + else if (checker == 1) + month += date[i]; + else if (checker == 2) + year += date[i]; + } + } + DateTime issueDate = new DateTime(Int32.Parse(year), Int32.Parse(month), Int32.Parse(day), 9, 0, 0); + if (DateTime.Compare(issueDate, RangeDate) >= 0) // first quarter + { + q1++; + } + else + { + currentDate.AddMonths(-3); + RangeDate.AddMonths(-3); + if (DateTime.Compare(issueDate, RangeDate) >= 0 && DateTime.Compare(issueDate, RangeDate) < 0) // second quarter + { + q2++; + } + else + { + currentDate.AddMonths(-3); + RangeDate.AddMonths(-3); + if (DateTime.Compare(issueDate, RangeDate) >= 0 && DateTime.Compare(issueDate, RangeDate) < 0) // third quarter + { + q3++; + } + else + { + currentDate.AddMonths(-3); + RangeDate.AddMonths(-3); + if (DateTime.Compare(issueDate, RangeDate) >= 0 && DateTime.Compare(issueDate, RangeDate) < 0) // fourth quarter + { + q4++; + } + } + } + } + } + // capacitites and bonuses for each quarter. + currentDate = new DateTime(DateTime.Now.Year, DateTime.Now.Month, 1, 9, 0, 0); + issueCapacity = (3) * 20; + if (q1 - issueCapacity < 0) + quarterITSMBonus[0] = 0; + else + { + bonus = (q1 - issueCapacity) * itsmMultiplier; + quarterITSMBonus[0] = bonus; + } + currentDate.AddMonths(-3); + issueCapacity = (3) * 20; + if (q2 - issueCapacity < 0) + quarterITSMBonus[1] = 0; + else + { + bonus = (q2 - issueCapacity) * itsmMultiplier; + quarterITSMBonus[1] = bonus; + } + currentDate.AddMonths(-3); + issueCapacity = (3) * 20; + if (q3 - issueCapacity < 0) + quarterITSMBonus[2] = 0; + else + { + bonus = (q3 - issueCapacity) * itsmMultiplier; + quarterITSMBonus[2] = bonus; + } + currentDate.AddMonths(-3); + issueCapacity = (3) * 20; + if (q4 - issueCapacity < 0) + quarterITSMBonus[3] = 0; + else + { + bonus = (q4 - issueCapacity) * itsmMultiplier; + quarterITSMBonus[3] = bonus; + } + var dateNow = DateTime.Now; + var totalDays = (dateNow - employee.EmployementDate); // all time capacity + int months = totalDays.Days / 30; + issueCapacity = months * 20; + if (FinishedITSMs - issueCapacity < 0) + return 0; + else + { + bonus = (FinishedITSMs - issueCapacity) * itsmMultiplier; + return bonus; + } + } + } } -} +} \ No newline at end of file diff --git a/DZDFreeTim.Business/Concrete/ITSMManager.cs b/DZDFreeTim.Business/Concrete/ITSMManager.cs index d7e5129..de8dbc7 100644 --- a/DZDFreeTim.Business/Concrete/ITSMManager.cs +++ b/DZDFreeTim.Business/Concrete/ITSMManager.cs @@ -16,6 +16,15 @@ public List GetAll() { return repoitsm.List(); } + public string GetNameById(int id) + { + var itsmName = repoitsm.GetById(id); + if (itsmName == null) + { + return String.Empty; + } + return itsmName.IssueName; + } } } diff --git a/DZDFreeTim.Business/Concrete/ProjectManager.cs b/DZDFreeTim.Business/Concrete/ProjectManager.cs index d4811dd..63e232e 100644 --- a/DZDFreeTim.Business/Concrete/ProjectManager.cs +++ b/DZDFreeTim.Business/Concrete/ProjectManager.cs @@ -17,13 +17,21 @@ public List GetAll() { return repoProject.List(); } + public string GetNameById(int id) + { + var projectName = repoProject.GetById(id); + if (projectName == null) + { + return String.Empty; + } + return projectName.ProjectName; + } + - - } } diff --git a/DZDFreeTim.Business/DZDFreeTim.Business.csproj b/DZDFreeTim.Business/DZDFreeTim.Business.csproj index 8bafd58..403fe3f 100644 --- a/DZDFreeTim.Business/DZDFreeTim.Business.csproj +++ b/DZDFreeTim.Business/DZDFreeTim.Business.csproj @@ -11,7 +11,7 @@ - + diff --git a/DZDFreeTim.Data/AppDbContext.cs b/DZDFreeTim.Data/AppDbContext.cs index 3158e84..464c82f 100644 --- a/DZDFreeTim.Data/AppDbContext.cs +++ b/DZDFreeTim.Data/AppDbContext.cs @@ -33,8 +33,10 @@ public class AppDbContext : DbContext // DB Bağlantı Metni protected override void OnConfiguring(DbContextOptionsBuilder builder) { - string connectionString = "Data Source=(LocalDb)\\MSSQLLocalDB; Initial Catalog=DZDFreeTimDb; Integrated Security=SSPI;"; + string connectionString = "Data Source=45.158.14.184 ;Initial Catalog=DZDFreeTeam; User ID=sa;password='DzdTech2022++';"; + //Data Source=(LocalDb)\\MSSQLLocalDB; Initial Catalog=DZDFreeTimDb; Integrated Security=SSPI; + //"Data Source=45.158.14.184 ;Initial Catalog=DZDFreeTeam; User ID=sa;password='DzdTech2022++';" builder.UseSqlServer(connectionString); } @@ -43,7 +45,8 @@ protected override void OnConfiguring(DbContextOptionsBuilder builder) protected override void OnModelCreating(ModelBuilder modelBuilder) { //model seeder , 14 class için tek tek yazılacaak - EmployeeSeeder.SeedData(modelBuilder); + + /* EmployeeSeeder.SeedData(modelBuilder); BankSeeder.SeedData(modelBuilder); DepartmentSeeder.SeedData(modelBuilder); DzdStatusSeeder.SeedData(modelBuilder); @@ -55,7 +58,8 @@ protected override void OnModelCreating(ModelBuilder modelBuilder) ProjectSeeder.SeedData(modelBuilder); ReporterSeeder.SeedData(modelBuilder); ResolutionSeeder.SeedData(modelBuilder); - TeamSeeder.SeedData(modelBuilder); + TeamSeeder.SeedData(modelBuilder);*/ + } } } diff --git a/DZDFreeTim.Data/Concrete/EmployeeRepository.cs b/DZDFreeTim.Data/Concrete/EmployeeRepository.cs new file mode 100644 index 0000000..3bcbf83 --- /dev/null +++ b/DZDFreeTim.Data/Concrete/EmployeeRepository.cs @@ -0,0 +1,70 @@ +using DZDFreeTim.Data.Abstract; +using DZDFreeTim.Data.Entity; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + + + +namespace DZDFreeTim.Data.Concreate +{ + public class EmployeeRepository : IEmployeeRepository + { + public Employee CreateEmployee(Employee employee) + { + using (var appDbContext = new AppDbContext()) + { + appDbContext.Employees.Add(employee); + appDbContext.SaveChanges(); + return employee; + } + } + + + + public void DeleteEmployee(int id) + { + using (var appDbContext = new AppDbContext()) + { + var deleteEmployee = GetEmployeeById(id); + appDbContext.Employees.Remove(deleteEmployee); + appDbContext.SaveChanges(); + } + } + + + + public List GetAllEmployee() + { + using (var appDbContext = new AppDbContext()) + { + return appDbContext.Employees.ToList(); + } + } + + + + public Employee GetEmployeeById(int id) + { + using (var appDbContext = new AppDbContext()) + { + return appDbContext.Employees.Find(id); + } + } + + + + public Employee UpdateEmployee(Employee employee) + { + using (var appDbContext = new AppDbContext()) + { + appDbContext.Employees.Update(employee); + appDbContext.SaveChanges(); + return employee; + } + } + } +} + diff --git a/DZDFreeTim.Data/DZDFreeTim.Data.csproj b/DZDFreeTim.Data/DZDFreeTim.Data.csproj index a38e13a..2a1d915 100644 --- a/DZDFreeTim.Data/DZDFreeTim.Data.csproj +++ b/DZDFreeTim.Data/DZDFreeTim.Data.csproj @@ -9,6 +9,7 @@ + diff --git a/DZDFreeTim.Data/Entity/Abstract/IEmployeeRepository.cs b/DZDFreeTim.Data/Entity/Abstract/IEmployeeRepository.cs new file mode 100644 index 0000000..78e2a53 --- /dev/null +++ b/DZDFreeTim.Data/Entity/Abstract/IEmployeeRepository.cs @@ -0,0 +1,21 @@ +using DZDFreeTim.Data.Entity; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + + + +namespace DZDFreeTim.Data.Abstract +{ + public interface IEmployeeRepository + { + List GetAllEmployee(); + Employee GetEmployeeById(int id); + Employee CreateEmployee(Employee employee); + Employee UpdateEmployee(Employee employee); + void DeleteEmployee(int id); + + } +} diff --git a/DZDFreeTim.Web.Api/DZDFreeTim.Web.Api.csproj b/DZDFreeTim.Web.Api/DZDFreeTim.Web.Api.csproj index 958c9fb..1850aa2 100644 --- a/DZDFreeTim.Web.Api/DZDFreeTim.Web.Api.csproj +++ b/DZDFreeTim.Web.Api/DZDFreeTim.Web.Api.csproj @@ -7,6 +7,7 @@ + diff --git a/DZDFreeTim.Web.Mvc/Controllers/AuthController.cs b/DZDFreeTim.Web.Mvc/Controllers/AuthController.cs index 89e5ef6..1d7d737 100644 --- a/DZDFreeTim.Web.Mvc/Controllers/AuthController.cs +++ b/DZDFreeTim.Web.Mvc/Controllers/AuthController.cs @@ -3,6 +3,7 @@ using Microsoft.AspNetCore.Authentication; using Microsoft.AspNetCore.Authentication.Cookies; using Microsoft.AspNetCore.Mvc; +using Newtonsoft.Json; using System.Security.Claims; namespace DZDFreeTim.Web.Mvc.Controllers @@ -66,6 +67,14 @@ public async Task Login(LoginViewModel model, string? returnUrl) await HttpContext.SignInAsync(CookieAuthenticationDefaults.AuthenticationScheme, claimsPrinciple, properties); + LoginViewModel data = new LoginViewModel() + { + Email = model.Email, + Password = model.Password + }; + TempData["mydata"] = JsonConvert.SerializeObject(model); + //ViewData["mydata"] = JsonConvert.SerializeObject(model); + if (user.EmployeeType == "analyst") return RedirectToAction("Analist", "User"); else if (user.EmployeeType == "developer") @@ -76,10 +85,12 @@ public async Task Login(LoginViewModel model, string? returnUrl) return RedirectToAction("ITSMIndex", "AdminITSM"); //return Redirect(returnUrl != null ? returnUrl : "/"); } + else + { + ModelState.AddModelError(string.Empty, "Mail adresi ya da şifre hatalı!"); + } } - else { - ModelState.AddModelError(string.Empty, "Mail adresi ya da şifre hatalı!"); - } + return View(); } diff --git a/DZDFreeTim.Web.Mvc/Controllers/ITSMController.cs b/DZDFreeTim.Web.Mvc/Controllers/ITSMController.cs index 893f014..1df3693 100644 --- a/DZDFreeTim.Web.Mvc/Controllers/ITSMController.cs +++ b/DZDFreeTim.Web.Mvc/Controllers/ITSMController.cs @@ -1,12 +1,22 @@ -using Microsoft.AspNetCore.Mvc; +using DZDFreeTim.Web.Mvc.Models; +using Microsoft.AspNetCore.Mvc; +using Newtonsoft.Json; namespace DZDFreeTim.Web.Mvc.Controllers { public class ITSMController : Controller { + [HttpGet] public IActionResult ITSM() { - return View(); + var data = TempData["resourcedata"]; + string converted = (string)data; + ResourceViewModel model = JsonConvert.DeserializeObject(converted); + TempData["resourcedata"] = JsonConvert.SerializeObject(model); + var listITSMs = new List(); + listITSMs = model.ITSMs; + + return View(listITSMs); } } } diff --git a/DZDFreeTim.Web.Mvc/Controllers/ProjectController.cs b/DZDFreeTim.Web.Mvc/Controllers/ProjectController.cs index ae527c4..1143f8e 100644 --- a/DZDFreeTim.Web.Mvc/Controllers/ProjectController.cs +++ b/DZDFreeTim.Web.Mvc/Controllers/ProjectController.cs @@ -1,12 +1,26 @@ -using Microsoft.AspNetCore.Mvc; +using DZDFreeTim.Web.Mvc.Models; +using Microsoft.AspNetCore.Mvc; +using Newtonsoft.Json; namespace DZDFreeTim.Web.Mvc.Controllers { public class ProjectController : Controller { + [HttpGet] public IActionResult Projects() { - return View(); + var data = TempData["resourcedata"]; + string converted = (string)data; + ResourceViewModel model = JsonConvert.DeserializeObject(converted); + TempData["resourcedata"] = JsonConvert.SerializeObject(model); + var listProjects = new List(); + listProjects = model.Projects; + foreach(var project in listProjects) + { + Console.WriteLine(project.DzdStatusName); + } + + return View(listProjects); } } } diff --git a/DZDFreeTim.Web.Mvc/Controllers/UserController.cs b/DZDFreeTim.Web.Mvc/Controllers/UserController.cs index 4aeb1b9..9449d5d 100644 --- a/DZDFreeTim.Web.Mvc/Controllers/UserController.cs +++ b/DZDFreeTim.Web.Mvc/Controllers/UserController.cs @@ -1,30 +1,218 @@ using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; +using DZDFreeTim.Business.Concrete; +using DZDFreeTim.Web.Mvc.Models; +using Newtonsoft.Json; +using System.Collections; namespace DZDFreeTim.Web.Mvc.Controllers { public class UserController : Controller { + EmployeeManager emp = new EmployeeManager(); + [Authorize(Roles = "developer")] public IActionResult Developer() { - return View(); + + var data = TempData["mydata"]; + string converted = (string)data; + LoginViewModel model = JsonConvert.DeserializeObject(converted); + + + + var employees = emp.GetAll(); + int ID = 0; + + foreach (var e in employees) + { + if (e.Email == model.Email) + { + ID = e.EmployeeID; + break; + } + } + + + ResourceViewModel resource = new ResourceViewModel(); + + resource.ProjectBonus = emp.CalculateBonusForProjects(ID, 10); + resource.ITSMBonus = emp.CalculateBonusForITSMs(ID, 10); + resource.TotalBonus = emp.CalculateBonusForProjects(ID, 10) + emp.CalculateBonusForITSMs(ID, 10); + + + resource.OpenProjects = emp.projects.Count; + resource.OpenITSMs = emp.ITSMs.Count; + resource.OpenAll = emp.projects.Count + emp.ITSMs.Count; + + resource.Name = emp.GetEmployeeById(ID).Name; + + resource.ProjectQuarters = emp.quarterProjectBonus; + resource.ITSMQuarters = emp.quarterITSMBonus; + + EmployeeManager employeeManager = new EmployeeManager(); + BankManager bank = new BankManager(); + ProjectManager project = new ProjectManager(); + DzdStatusManager dzdStatusManager = new DzdStatusManager(); + IntertechTeamManager intertech = new IntertechTeamManager(); + ITSMManager itsmm = new ITSMManager(); + IssueTypeManager issuetypem = new IssueTypeManager(); + IssueStatusManager issuestatusm = new IssueStatusManager(); + ResolutionManager resolutionm = new ResolutionManager(); + + List projects = new List(); + List ITSMs = new List(); + + foreach (var e in emp.projects) + { + // resource projeleri güncellenecek! Sonra project controllerde kullanılacak! + ProjectDetailModel prj = new ProjectDetailModel(); + prj.JiraStatus = e.JiraStatus; + prj.JiraProjectNo = e.JiraProjectNo; + prj.JiraTaskNo = e.JiraTaskNo; + prj.ProjectId = e.ProjectId; + prj.ProjectName = project.GetNameById(e.ProjectId); + prj.Notes = e.Notes; + prj.DzdStatusName = dzdStatusManager.GetNameById(e.DzdStatus); + prj.BankName = bank.GetNameById(e.BankId); + prj.InvNumber = e.InvNumber; + prj.BillYearQuarter = e.BillYearQuarter; + prj.Effort = e.Effort; + prj.AnalystName = employeeManager.GetNameById(e.AnalystId); + prj.DeveloperName = employeeManager.GetNameById(e.DeveloperId); + prj.Priority = e.Priority; + prj.IntertechTeamName = intertech.GetNameById(e.IntertechTeam); + projects.Add(prj); + } + resource.Projects = projects; + + foreach (var e in emp.ITSMs) + { + ITSMDetailModel itsm = new ITSMDetailModel(); + itsm.Summary = e.Summary; + itsm.StatusName = issuestatusm.GetNameById(e.Status); + itsm.IssueId = e.IssueId; + itsm.IssueName = itsmm.GetNameById(e.IssueId); + itsm.ReporterName = employeeManager.GetNameById(e.ReporterId); + itsm.Priority = e.Priority; + itsm.AssigneeMail = employeeManager.GetEmailById(e.AssigneeId); + itsm.CompanyName = bank.GetNameById(e.CompanyId); + itsm.Created = e.Created; + itsm.Resolved = e.Resolved; + itsm.IssueTypeName = issuetypem.GetNameById(e.IssueId); + itsm.ResolutionName = resolutionm.GetNameById(e.Resolution); + ITSMs.Add(itsm); + } + resource.ITSMs = ITSMs; + + ResourceViewModel data2 = new ResourceViewModel(); + data2 = resource; + TempData["resourcedata"] = JsonConvert.SerializeObject(data2); + TempData["mydata"] = JsonConvert.SerializeObject(model); + return View(resource); } [Authorize(Roles = "analyst")] public IActionResult Analist() { - return View(); + var data = TempData["mydata"]; + string converted = (string)data; + LoginViewModel model = JsonConvert.DeserializeObject(converted); + var employees = emp.GetAll(); + int ID = 0; + + foreach (var e in employees) + { + if (e.Email == model.Email) + { + ID = e.EmployeeID; + break; + } + } + + ResourceViewModel resource = new ResourceViewModel(); + + resource.ProjectBonus = emp.CalculateBonusForProjects(ID, 10); + resource.ITSMBonus = emp.CalculateBonusForITSMs(ID, 10); + resource.TotalBonus = emp.CalculateBonusForProjects(ID, 10) + emp.CalculateBonusForITSMs(ID, 10); + + resource.OpenProjects = emp.projects.Count; + resource.OpenITSMs = emp.ITSMs.Count; + resource.OpenAll = emp.projects.Count + emp.ITSMs.Count; + + resource.Name = emp.GetEmployeeById(ID).Name; + resource.ProjectQuarters = emp.quarterProjectBonus; + resource.ITSMQuarters = emp.quarterITSMBonus; + + EmployeeManager employeeManager = new EmployeeManager(); + BankManager bank = new BankManager(); + ProjectManager project = new ProjectManager(); + DzdStatusManager dzdStatusManager = new DzdStatusManager(); + IntertechTeamManager intertech = new IntertechTeamManager(); + ITSMManager itsmm = new ITSMManager(); + IssueTypeManager issuetypem = new IssueTypeManager(); + IssueStatusManager issuestatusm = new IssueStatusManager(); + ResolutionManager resolutionm = new ResolutionManager(); + + List projects = new List(); + List ITSMs = new List(); + + foreach (var e in emp.projects) + { + // resource projeleri güncellenecek! Sonra project controllerde kullanılacak! + ProjectDetailModel prj = new ProjectDetailModel(); + prj.JiraStatus = e.JiraStatus; + prj.JiraProjectNo = e.JiraProjectNo; + prj.JiraTaskNo = e.JiraTaskNo; + prj.ProjectId = e.ProjectId; + prj.ProjectName = project.GetNameById(e.ProjectId); + prj.Notes = e.Notes; + prj.DzdStatusName = dzdStatusManager.GetNameById(e.DzdStatus); + prj.BankName = bank.GetNameById(e.BankId); + prj.InvNumber = e.InvNumber; + prj.BillYearQuarter = e.BillYearQuarter; + prj.Effort = e.Effort; + prj.AnalystName = employeeManager.GetNameById(e.AnalystId); + prj.DeveloperName = employeeManager.GetNameById(e.DeveloperId); + prj.Priority = e.Priority; + prj.IntertechTeamName = intertech.GetNameById(e.IntertechTeam); + projects.Add(prj); + } + resource.Projects = projects; + foreach (var e in emp.ITSMs) + { + ITSMDetailModel itsm = new ITSMDetailModel(); + itsm.Summary = e.Summary; + itsm.StatusName = issuestatusm.GetNameById(e.Status); + itsm.IssueId = e.IssueId; + itsm.IssueName = itsmm.GetNameById(e.IssueId); + itsm.ReporterName = employeeManager.GetNameById(e.ReporterId); + itsm.Priority = e.Priority; + itsm.AssigneeMail = employeeManager.GetEmailById(e.AssigneeId); + itsm.CompanyName = bank.GetNameById(e.CompanyId); + itsm.Created = e.Created; + itsm.Resolved = e.Resolved; + itsm.IssueTypeName = issuetypem.GetNameById(e.IssueId); + itsm.ResolutionName = resolutionm.GetNameById(e.Resolution); + ITSMs.Add(itsm); + } + resource.ITSMs = ITSMs; + + ResourceViewModel data2 = new ResourceViewModel(); + data2 = resource; + TempData["resourcedata"] = JsonConvert.SerializeObject(data2); + TempData["mydata"] = JsonConvert.SerializeObject(model); + + + return View(resource); } - [Authorize(Roles = "superuser")] + [Authorize(Roles = "superuser")] public IActionResult SuperUser() { return View(); - - } } } diff --git a/DZDFreeTim.Web.Mvc/DZDFreeTim.Web.Mvc.csproj b/DZDFreeTim.Web.Mvc/DZDFreeTim.Web.Mvc.csproj index e5854db..243ecdf 100644 --- a/DZDFreeTim.Web.Mvc/DZDFreeTim.Web.Mvc.csproj +++ b/DZDFreeTim.Web.Mvc/DZDFreeTim.Web.Mvc.csproj @@ -9,6 +9,7 @@ + diff --git a/DZDFreeTim.Web.Mvc/Models/ResourceViewModel.cs b/DZDFreeTim.Web.Mvc/Models/ResourceViewModel.cs new file mode 100644 index 0000000..44bde07 --- /dev/null +++ b/DZDFreeTim.Web.Mvc/Models/ResourceViewModel.cs @@ -0,0 +1,18 @@ +namespace DZDFreeTim.Web.Mvc.Models +{ + public class ResourceViewModel + { + public double ProjectBonus { get; set; } + public double ITSMBonus { get; set; } + public double TotalBonus { get; set; } + public int OpenProjects { get; set; } + public int OpenITSMs { get; set; } + public int OpenAll { get; set; } + public List Projects { get; set; } + public int[] ProjectQuarters { get; set; } + public int[] ITSMQuarters { get; set; } + public List ITSMs { get; set; } + public string Name { get; set;} + + } +} diff --git a/DZDFreeTim.Web.Mvc/Views/Auth/Login.cshtml b/DZDFreeTim.Web.Mvc/Views/Auth/Login.cshtml index 06fd77d..2225a95 100644 --- a/DZDFreeTim.Web.Mvc/Views/Auth/Login.cshtml +++ b/DZDFreeTim.Web.Mvc/Views/Auth/Login.cshtml @@ -74,14 +74,6 @@ } - - - - - - - - diff --git a/DZDFreeTim.Web.Mvc/Views/ITSM/ITSM.cshtml b/DZDFreeTim.Web.Mvc/Views/ITSM/ITSM.cshtml index 78e8602..63859d6 100644 --- a/DZDFreeTim.Web.Mvc/Views/ITSM/ITSM.cshtml +++ b/DZDFreeTim.Web.Mvc/Views/ITSM/ITSM.cshtml @@ -1,4 +1,4 @@ - +@model IEnumerable
@@ -70,58 +70,17 @@ - - Incident - Odeabank - ITSM-453728 - internet ve mobil şube parola değiştirme sorunu - Low - Closed - - - - Incident - Odeabank - ITSM-453728 - internet ve mobil şube parola değiştirme sorunu - Low - Closed - - - Incident - Odeabank - ITSM-453728 - internet ve mobil şube parola değiştirme sorunu - Low - Closed - - - - Incident - Odeabank - ITSM-453728 - internet ve mobil şube parola değiştirme sorunu - Low - Closed - - - - Incident - Odeabank - ITSM-453728 - internet ve mobil şube parola değiştirme sorunu - Low - Closed - - - - Incident - Odeabank - ITSM-453728 - internet ve mobil şube parola değiştirme sorunu - Low - Closed + @foreach (var item in Model){ + + @item.IssueTypeName + @item.CompanyName + @item.IssueName + @item.Summary + @item.Priority + @item.StatusName + + } diff --git a/DZDFreeTim.Web.Mvc/Views/Project/Projects.cshtml b/DZDFreeTim.Web.Mvc/Views/Project/Projects.cshtml index 841f0a9..def756d 100644 --- a/DZDFreeTim.Web.Mvc/Views/Project/Projects.cshtml +++ b/DZDFreeTim.Web.Mvc/Views/Project/Projects.cshtml @@ -1,4 +1,4 @@ - +@model IEnumerable
@@ -71,63 +71,16 @@ + @foreach (var item in Model){ - HSBC - HSBC-14226 - HSBC-15242 - HSBC-14786 910A6062213963 - Dijital Link KVKK Uygulaması - 14 - Salesforce Fatura Talebi - 6 - @*Detay*@ - - - HSBC - HSBC-14226 - HSBC-15242 - HSBC-14786 910A6062213963 - Dijital Link KVKK Uygulaması - 14 - Salesforce Fatura Talebi - 6 - @*Detay*@ - - - HSBC - HSBC-14226 - HSBC-15242 - HSBC-14786 910A6062213963 - Dijital Link KVKK Uygulaması - 14 - Salesforce Fatura Talebi - 6 - @*Detay*@ - - - - HSBC - HSBC-14226 - HSBC-15242 - HSBC-14786 910A6062213963 - Dijital Link KVKK Uygulaması - 14 - Salesforce Fatura Talebi - 6 - @*Detay*@ - - - - HSBC - HSBC-14226 - HSBC-15242 - HSBC-14786 910A6062213963 - Dijital Link KVKK Uygulaması - 14 - Salesforce Fatura Talebi - 6 - @*Detay*@ - - - - HSBC - HSBC-14226 - HSBC-15242 - HSBC-14786 910A6062213963 - Dijital Link KVKK Uygulaması - 14 - Salesforce Fatura Talebi - 6 - @*Detay*@ + @item.BankName + @item.JiraProjectNo + @item.JiraTaskNo + @item.ProjectName2:16 PM + @item.DzdStatusName + @item.Effort + } diff --git a/DZDFreeTim.Web.Mvc/Views/User/Analist.cshtml b/DZDFreeTim.Web.Mvc/Views/User/Analist.cshtml index 2fde340..c267661 100644 --- a/DZDFreeTim.Web.Mvc/Views/User/Analist.cshtml +++ b/DZDFreeTim.Web.Mvc/Views/User/Analist.cshtml @@ -1,4 +1,4 @@ -@model LoginViewModel +@model ResourceViewModel
@@ -10,7 +10,7 @@