protected void Page_Load(object sender, EventArgs e) { Session["report"] = null; ArrayList report = new ArrayList(); CompanyReport cr = new CompanyReport(); Hashtable HtParams = new Hashtable(); cr = new CompanyReport(); cr.idfield = Convert.ToInt32(DatabaseConnection.SqlScalartoObj("SELECT ID FROM QB_CUSTOMERQUERY WHERE TITLE='Fixed6'")); //ex 222; HtParams = new Hashtable(); HtParams.Add("ID", Request.Params["leadid"]); cr.Params = HtParams; cr.Finalize = true; cr.Type = 0; cr.itemPage = 10; report.Add(cr); Session["report"] = report; string js; js = "<script>"; js += "function SetRef(){"; js += " window.open('/report/htmlreport.aspx');"; js += " self.close();"; js += " parent.HideBox();}"; js += "SetRef();</script>"; ClientScript.RegisterStartupScript(this.GetType(), "pl", js); }
private void Barcode(object sender, EventArgs e) { if (((MainForm)this.MdiParent).ActiveMdiChild == this) { List <int> CheckList = new List <int>(); foreach (DataGridViewRow row in dgvCompanyList.Rows) { DataGridViewCheckBoxCell chk = (DataGridViewCheckBoxCell)dgvCompanyList[0, row.Index]; if (chk.Value == null) { continue; } else if ((bool)chk.Value == true) { CheckList.Add(dgvCompanyList[1, row.Index].Value.ToInt()); } } if (CheckList.Count == 0) { MessageBox.Show("거래처를 선택하여 주세요."); return; } string selList = string.Join(",", CheckList); CompanyService service = new CompanyService(); DataTable dt = service.CompanyPrint(selList); CompanyReport xtra = new CompanyReport(); xtra.DataSource = dt; ReportPreviewForm frm = new ReportPreviewForm(xtra); } }
public float?Calculate(CompanyReport report) { try { if (!IsPositiveNetIncome(report) || !IsPositiveFlow(report) || !IsNormalEps(report)) { return(null); } int yearsCount = report.YearReports.Count; var epsGrowth = Math.Pow((double)report.YearReports.Last().Eps / (double)report.YearReports.First().Eps, 1.0d / (yearsCount - 1 + yearsCount * epsGrowthError)); if (epsGrowth < 1) { return(null); } var averagePe = report.YearReports.Select(n => n.Pe).Sum() / yearsCount; var price = report.YearReports.Last().Eps *epsGrowth *averagePe; return((float?)price); } catch { return(null); } }
private void btnComName_Click(object sender, EventArgs e) { CompanyReport objcom = new CompanyReport(); rptViewer objView = new rptViewer(); if (!String.IsNullOrEmpty(txtSearch.Text)) { objcom.SetParameterValue("@ComID", txtSearch.Text); } CompanyBL obj = new CompanyBL() { CompanyID = Convert.ToInt32(txtSearch.Text) }; var dt = obj.SelectComId(); if (dt != null) { objcom.SetDataSource(dt); objView.crptViewer.ReportSource = objcom; objView.WindowState = FormWindowState.Maximized; objView.ShowDialog(); } else { MessageBox.Show("No Record Found"); } //crptViewerCom.ReportSource = objcom; txtSearch.Clear(); }
internal async Task <List <CompanyReport> > CrawlCompanyReport() { var pageResult = await Browser.NavigateToPageAsync(new Uri(string.Format(SECSearchURL, companyName))); Companies = new List <CompanyReport>(); var nodes = pageResult.Html.CssSelect(".tableFile2").FirstOrDefault().SelectNodes("tr"); if (nodes != null) { foreach (var node in nodes) { var company = new CompanyReport(); var childNodes = node.ChildNodes; if (childNodes[1].SelectNodes("a") != null) { var cikNode = childNodes[1].SelectNodes("a").FirstOrDefault(); company.CIK = cikNode.InnerText; company.AnnualReportLink = cikNode.GetAttributeValue("href").Replace("&", "&"); var companyName = childNodes[3]; company.Name = companyName.InnerText.Replace("&", "&"); var state = childNodes[5]; company.State = state.InnerText.Replace("&", "&"); Companies.Add(company); } } } return(Companies); }
private bool IsNormalEps(CompanyReport report) { if (report.YearReports.All(s => s.Eps > 1)) { return(true); } return(false); }
internal async Task <List <Report> > LoadCompanyReport(CompanyReport selectedCompany) { var pageResult = await Browser.NavigateToPageAsync(new Uri(SECBaseURL + selectedCompany.AnnualReportLink)); Reports = new List <Report>(); var nodes = pageResult.Html.CssSelect(".tableFile2").FirstOrDefault().SelectNodes("tr"); if (nodes != null) { foreach (var node in nodes) { var report = new Report(); var childNodes = node.ChildNodes; if (childNodes != null) { if (childNodes[1].Name != "th" && (childNodes[3].ChildNodes != null && childNodes[3].ChildNodes.Count == 3)) { var cikNode = childNodes[1]; report.Filing = cikNode.InnerText; var format = childNodes[3]; report.Format = format.InnerText.Replace(" ", ""); if (format.ChildNodes != null && format.ChildNodes.Count == 3) { report.Format = format.ChildNodes[0].InnerText.Replace(" ", ""); report.Interactive = format.ChildNodes[2].GetAttributeValue("href").Replace("&", "&"); } report.URL = format.GetAttributeValue("href").Replace("&", "&"); var name = childNodes[5]; report.Name = name.InnerText.Replace(" ", ""); DateTime date = DateTime.Now; if (DateTime.TryParse(childNodes[7].InnerText, out date)) { report.FilingDate = date; } report.CIK = selectedCompany.CIK; Reports.Add(report); } } } } return(Reports); }
private void UpdateObject(CompanyReport _newCompanyReport, ref CompanyReport _oldCompanyReport) { try { foreach (PropertyInfo CompanyReportPropInfo in _newCompanyReport.GetType().GetProperties().ToList()) { _oldCompanyReport.GetType().GetProperty(CompanyReportPropInfo.Name).SetValue(_oldCompanyReport, _newCompanyReport.GetType().GetProperty(CompanyReportPropInfo.Name).GetValue(_newCompanyReport)); } } catch (Exception e) { Console.WriteLine(e); throw; } }
public CompanyReport AddNewCompanyReport(CompanyReport _CompanyReport) { try { using (var context = new VeraEntities()) { context.CompanyReport.Add(_CompanyReport); int numOfInserted = context.SaveChanges(); return(numOfInserted > 0 ? _CompanyReport : null); } } catch (Exception) { throw; } }
protected void Page_Load(object sender, EventArgs e) { QueryBuilderManager qb = new QueryBuilderManager(); Trace.Warn("pageload", "pageload"); if (Session["report"] != null) { ArrayList re = new ArrayList(); re = (ArrayList)Session["report"]; foreach (object re1 in re) { CompanyReport cr = new CompanyReport(); cr = (CompanyReport)re1; string qbdesc = String.Empty; DataTable d = qb.QBManager(cr.idfield, cr.Params); qbdesc = DatabaseConnection.SqlScalar("SELECT DESCRIPTION FROM QB_CUSTOMERQUERY WHERE ID=" + cr.idfield); if (d.Rows.Count > 0) { switch (cr.Type) { case 0: htmlcontact(d, cr.Finalize, cr.itemPage, qbdesc, cr.morerecord); break; case 1: HtmlList(d, cr.Finalize, qbdesc, cr.morerecord); break; } } else { report = "No data"; } Session["report"] = null; } Response.Write("<body onload=\"printpage();\">"); Response.Write(report); Response.Write("</body>"); } }
private async void LoadCompanyReport() { IsCompanyReportVisile = true; if (crawler == null) { crawler = new CompanyAnnualReportCrawler(CompanyName); } if (selectedCompany != null) { CompanyReport = await crawler.CrawlCompanyReport(selectedCompany.ReportLink); if (CompanyReport.Count > 0) { SelectedReport = CompanyReport[0]; } } }
private bool IsPositiveFlow(CompanyReport report) { int positiveFlowYearCount = 0; int negativeFlowYearCount = 0; for (int i = 0; i < report.YearReports.Count - 1; i++) { if (report.YearReports[i + 1].NetIncome > report.YearReports[i].NetIncome) { positiveFlowYearCount++; } else { negativeFlowYearCount++; } } return(positiveFlowYearCount > negativeFlowYearCount); }
public CompanyReport UpdateCompanyReport(CompanyReport _CompanyReport) { try { using (var context = new VeraEntities()) { var oldCompanyReport = context.CompanyReport.FirstOrDefault(u => u.Id == _CompanyReport.Id); if (oldCompanyReport != null) { UpdateObject(_CompanyReport, ref oldCompanyReport); var numberOfUpdatedCompanyReport = context.SaveChanges(); return(numberOfUpdatedCompanyReport > 0 ? _CompanyReport : null); } return(null); } } catch (Exception e) { Console.WriteLine(e); throw; } }
private bool IsPositiveNetIncome(CompanyReport report) { return(report.YearReports .Select(r => r.NetIncome) .Sum() > 0.0f); }
public static CompanyReport GetCompanyReport(this UnitOfWork unit, int year, int month, ModelFactory factory) { var AllTeams = unit.Teams.Get().ToList(); List <CompanyReportTeams> Teams = new List <CompanyReportTeams>(); List <CompanyReportProjects> Projects = new List <CompanyReportProjects>(); var employeesWithMostOvertime = unit.Days.Get() .Where(d => d.Hours > 8 && d.Date.Month == month && d.Date.Year == year) .GroupBy(d => new { d.Employee, d.Hours }) .Select(d => new OvertimeEmployees { Name = d.Key.Employee.FirstName + " " + d.Key.Employee.LastName, SumHours = d.Sum(w => w.Hours - 8) }).OrderByDescending(t => t.SumHours) .ToList(); var totalForProjects = unit.Tasks.Get() .Where(p => p.Day.Date.Year == year && p.Day.Date.Month == month) .GroupBy(d => new { d.Project.Name }) .Select(t => new TotalForProjects { Name = t.Key.Name, OvertimeHours = t.Sum(w => w.Hours) }).ToList(); foreach (var team in AllTeams) { decimal?overtimehours = 0; var employees = unit.Engagements.Get().Where(x => x.Team.Id == team.Id).Select(x => x.Employee).ToList(); foreach (var employee in employees) { foreach (var day in employee.Days) { if (day.Hours > 8 && day.Date.Month == month && day.Date.Year == year) { overtimehours += day.Hours - 8; } } } CompanyReportTeams teamToAdd = new CompanyReportTeams() { TeamName = team.Name, OvertimeHours = overtimehours }; Teams.Add(teamToAdd); } int days = DateTime.DaysInMonth(year, month); DateTime currentDate = new DateTime(year, month, days); //taking into consideration employee/project who quit/ended in the given month/year var numEmployees = unit.Employees.Get().Where(x => x.BeginDate <= currentDate && (x.EndDate == null || x.EndDate > currentDate || x.EndDate.Value.Month == month)) .Count(); var numProjects = unit.Projects.Get().Where(x => x.StartDate <= currentDate && (x.EndDate == null || x.EndDate > currentDate || x.EndDate.Value.Month == month)) .Count(); //total working hours for every employee var totalHours = unit.Days.Get().Where(x => x.Type == DayType.WorkingDay && x.Date.Year == year && x.Date.Month == month) .Select(x => (int?)x.Hours) .Sum() ?? 0; int maxPossibleTotalHours = noDaysInMonth(year, month) * 8 * numEmployees; //pm utilization int pmCount = unit.Employees.Get().Where(x => x.Roles.Id == "MGR") .Where(x => x.BeginDate <= currentDate && (x.EndDate == null || x.EndDate > currentDate || x.EndDate.Value.Month == month)) .Count(); var pmWorkingDays = unit.Days.Get().Where(x => x.Type == DayType.WorkingDay && x.Date.Month == month && x.Date.Year == year) .Where(x => x.Employee.Roles.Id == "MGR" && x.Employee.BeginDate <= currentDate && (x.Employee.EndDate == null || x.Employee.EndDate > currentDate || x.Employee.EndDate.Value.Month == month)) .Count(); decimal?pmUtil = 0; if ((noDaysInMonth(year, month) * pmCount) != 0) { pmUtil = Math.Round((decimal)(pmWorkingDays / (decimal)(noDaysInMonth(year, month) * pmCount)) * 100, 2); } //qa utilization int qaCount = unit.Employees.Get().Where(x => x.Roles.Id == "QAE") .Where(x => x.BeginDate <= currentDate && (x.EndDate == null || x.EndDate > currentDate || x.EndDate.Value.Month == month)) .Count(); var qaWorkingDays = unit.Days.Get().Where(x => x.Type == DayType.WorkingDay && x.Date.Month == month && x.Date.Year == year) .Where(x => x.Employee.Roles.Id == "QAE" && x.Employee.BeginDate <= currentDate && (x.Employee.EndDate == null || x.Employee.EndDate > currentDate || x.Employee.EndDate.Value.Month == month)) .Count(); decimal qaUtil = 0; if (noDaysInMonth(year, month) * qaCount != 0) { qaUtil = Math.Round((decimal)(qaWorkingDays / (decimal)(noDaysInMonth(year, month) * qaCount)) * 100, 2); } //dev utilization int devCount = unit.Employees.Get().Where(x => x.Roles.Id == "DEV") .Where(x => x.BeginDate <= currentDate && (x.EndDate == null || x.EndDate > currentDate || x.EndDate.Value.Month == month)) .Count(); var devWorkingDays = unit.Days.Get().Where(x => x.Type == DayType.WorkingDay && x.Date.Month == month && x.Date.Year == year) .Where(x => x.Employee.Roles.Id == "DEV" && x.Employee.BeginDate <= currentDate && (x.Employee.EndDate == null || x.Employee.EndDate > currentDate || x.Employee.EndDate.Value.Month == month)) .Count(); decimal devUtil = 0; if (noDaysInMonth(year, month) * devCount != 0) { devUtil = Math.Round((decimal)(devWorkingDays / (decimal)(noDaysInMonth(year, month) * devCount)) * 100, 2); } //uiux utilization int uiuxCount = unit.Employees.Get().Where(x => x.Roles.Id == "UIX") .Where(x => x.BeginDate <= currentDate && (x.EndDate == null || x.EndDate > currentDate || x.EndDate.Value.Month == month)) .Count(); var uiuxWorkingDays = unit.Days.Get().Where(x => x.Type == DayType.WorkingDay && x.Date.Month == month && x.Date.Year == year) .Where(x => x.Employee.Roles.Id == "UIX" && x.Employee.BeginDate <= currentDate && (x.Employee.EndDate == null || x.Employee.EndDate > currentDate || x.Employee.EndDate.Value.Month == month)) .Count(); decimal uiuxUtil = 0; if (noDaysInMonth(year, month) * uiuxCount != 0) { uiuxUtil = Math.Round((decimal)(uiuxWorkingDays / (decimal)(noDaysInMonth(year, month) * uiuxCount)) * 100, 2); } //var overtimeTeams = unit.Days.Get().Where(x => x.Date.Year == year && x.Date.Month == month) // .Select(x => new CompanyReportTeams() // { // TeamName = x.Employee.Engagements.Select(y => y.Team.Name).FirstOrDefault(), // //x.Tasks.Select(y => y.Project.Team.Name).FirstOrDefault(), // OvertimeHours = 0 // }) // .OrderBy(y => y.TeamName) // .ToList(); var companyReport = new CompanyReport { OvertimeEmployees = employeesWithMostOvertime, NumEmployees = numEmployees, NumProjects = numProjects, TotalHours = totalHours, MaxPossibleTotalHours = maxPossibleTotalHours, PMUtilization = pmUtil.Value, PMCount = pmCount, DEVUtilization = devUtil, DEVCount = devCount, QAUtilization = qaUtil, QACount = qaCount, UIUXUtilization = uiuxUtil, UIUXCount = uiuxCount, OvertimeHoursTeams = Teams, TotalForProjects = totalForProjects //RevenueProjects = revenueProjects }; return(companyReport); }
public static CompanyReport GetCompanyReport(this UnitOfWork unit, int year, int month, ModelFactory factory) { int days = DateTime.DaysInMonth(year, month); DateTime Date = new DateTime(year, month, days); var AllTeams = unit.Teams.Get().ToList(); List <CompanyTeamModel> Teams = new List <CompanyTeamModel>(); List <CompanyProjectModel> Projects = new List <CompanyProjectModel>(); decimal?FulltotalHours = 0; foreach (var team in AllTeams) { int PTO = 0; decimal?teamTotalHours = 0; int CompMissingEntries = 0; decimal?overtimehours = 0; var projects = team.Projects; var employees = unit.Engagements.Get().Where(x => x.Team.Id == team.Id).Select(x => x.Employee).ToList(); foreach (var employee in employees) { decimal?overtime = 0; var daysss = unit.Engagements.Get().Where(x => x.Team.Id == team.Id).Select(x => x.Employee).SelectMany(y => y.Days) .Where(x => x.Employee.Id == employee.Id && x.Date.Value.Year == year && x.Date.Value.Month == month); overtime = unit.Engagements.Get().Where(x => x.Team.Id == team.Id).Select(x => x.Employee).SelectMany(y => y.Days).Where(x => x.Employee.Id == employee.Id && x.Date.Value.Year == year && x.Date.Value.Month == month && x.Hours > 8) .Select(x => x.Hours).DefaultIfEmpty(0).Sum(); int overtimeCount = unit.Engagements.Get().Where(x => x.Team.Id == team.Id).Select(x => x.Employee).SelectMany(y => y.Days) .Where(x => x.Employee.Id == employee.Id && x.Date.Value.Year == year && x.Date.Value.Month == month && x.Hours > 8).Select(x => x.Hours).Count(); overtime -= overtimeCount * 8; overtimehours += overtime; PTO += unit.Days.Get().Where(x => x.Employee.Id == employee.Id && x.Date.Value.Year == year && x.Date.Value.Month == month && (x.Category.Description == "Vacation" || x.Category.Description == "Religious day" || x.Category.Description == "Other absence" || x.Category.Description == "Public holiday" || x.Category.Description == "Sick leave") ).Count(); //foreach (var day in daysss) //{ // if(day.Hours>8) // overtimehours += day.Hours - 8; //} //decimal? totalhoursss = unit.Engagements.Get().Where(x => x.Team.Id == team.Id).Select(x => x.Employee) // .SelectMany(y => y.Days).Where(x => x.Employee.Id == employee.Id // && x.Date.Value.Year == year // && x.Date.Value.Month == month) // .Select(x => x.Hours).DefaultIfEmpty(0).Sum(); decimal?totalHours = 0; foreach (var project in projects) { var hoursAtProject = unit.Days.Get() .Where(d => d.Employee.Id == employee.Id && d.Date.Value.Year == year && d.Date.Value.Month == month) .SelectMany(a => a.Assignments).Where(a => a.Project.Id == project.Id).Select(h => h.Hours).DefaultIfEmpty(0).Sum(); totalHours += hoursAtProject; } teamTotalHours += totalHours; List <int> listDates = null; var date = new DateTime(year, month, 1); if (employee.BeginDate.Value.Year == date.Year && employee.BeginDate.Value.Month == date.Month && employee.BeginDate.Value.Day < DateTime.DaysInMonth(year, month)) { listDates = DateTimeHelper.ListOfWorkingDays(year, month, employee.BeginDate.Value.Day).ToList(); } else { listDates = DateTimeHelper.ListOfWorkingDays(year, month).ToList(); } var missingEntries = (employee.BeginDate.Value.Date > date.Date) ? 0 : listDates.Except(daysss.Select(x => x.Date.Value.Day)).Count(); CompMissingEntries += missingEntries; } var totalPossibleHours = NoDaysInMonth(year, month) * employees.Count() * 8; var Utilization = Math.Round(((double)teamTotalHours / totalPossibleHours) * 100, 2); CompanyTeamModel teamToAdd = new CompanyTeamModel() { Name = team.Name, OvertimeHours = overtimehours, MissingEntries = CompMissingEntries, TotalHours = teamTotalHours, Utilization = Utilization, TotalPossibleHours = totalPossibleHours, PTO = PTO }; Teams.Add(teamToAdd); FulltotalHours += teamTotalHours; } int numberOfEmployees = unit.Employees.Get().Where(x => x.BeginDate <= Date && (x.EndDate == null || x.EndDate > Date || x.EndDate.Value.Month == month)).Count(); int maxPossibleHours = NoDaysInMonth(year, month) * 8 * numberOfEmployees; // pm utilization int pmCount = unit.Employees.Get() .Where(x => x.Position.Id == "MGR" && x.BeginDate <= Date && (x.EndDate == null || x.EndDate > Date || x.EndDate.Value.Month == month)) .Count(); var pmWorkingDays = unit.Days.Get() .Where(x => x.Category.Description == "Working day" && x.Date.Value.Month == month && x.Date.Value.Year == year && x.Employee.Position.Id == "MGR" && x.Employee.BeginDate <= Date && (x.Employee.EndDate == null || x.Employee.EndDate > Date || x.Employee.EndDate.Value.Month == month)) .Count(); decimal?pmUtil = 0; if ((NoDaysInMonth(year, month) * pmCount) != 0) { pmUtil = Math.Round((decimal)(pmWorkingDays / (decimal)(NoDaysInMonth(year, month) * pmCount)) * 100, 2); } //qa utilization int qaCount = unit.Employees.Get() .Where(x => x.Position.Id == "QAE" && x.BeginDate <= Date && (x.EndDate == null || x.EndDate > Date || x.EndDate.Value.Month == month)) .Count(); var qaWorkingDays = unit.Days.Get() .Where(x => x.Category.Description == "Working day" && x.Date.Value.Month == month && x.Date.Value.Year == year && x.Employee.Position.Id == "QAE" && x.Employee.BeginDate <= Date && (x.Employee.EndDate == null || x.Employee.EndDate > Date || x.Employee.EndDate.Value.Month == month)) .Count(); decimal qaUtil = 0; if (NoDaysInMonth(year, month) * qaCount != 0) { qaUtil = Math.Round((decimal)(qaWorkingDays / (decimal)(NoDaysInMonth(year, month) * qaCount)) * 100, 2); } //dev utilization int devCount = unit.Employees.Get() .Where(x => x.Position.Id == "DEV" && x.BeginDate <= Date && (x.EndDate == null || x.EndDate > Date || x.EndDate.Value.Month == month)) .Count(); var devWorkingDays = unit.Days.Get() .Where(x => x.Category.Description == "Working day" && x.Date.Value.Month == month && x.Date.Value.Year == year && x.Employee.Position.Id == "DEV" && x.Employee.BeginDate <= Date && (x.Employee.EndDate == null || x.Employee.EndDate > Date || x.Employee.EndDate.Value.Month == month)) .Count(); decimal devUtil = 0; if (NoDaysInMonth(year, month) * devCount != 0) { devUtil = Math.Round((decimal)(devWorkingDays / (decimal)(NoDaysInMonth(year, month) * devCount)) * 100, 2); } //uiux utilization int uiuxCount = unit.Employees.Get() .Where(x => x.Position.Id == "UIX" && x.BeginDate <= Date && (x.EndDate == null || x.EndDate > Date || x.EndDate.Value.Month == month)) .Count(); var uiuxWorkingDays = unit.Days.Get() .Where(x => x.Category.Description == "Working day" && x.Date.Value.Month == month && x.Date.Value.Year == year && x.Employee.Position.Id == "UIX" && x.Employee.BeginDate <= Date && (x.Employee.EndDate == null || x.Employee.EndDate > Date || x.Employee.EndDate.Value.Month == month)) .Count(); decimal uiuxUtil = 0; if (NoDaysInMonth(year, month) * uiuxCount != 0) { uiuxUtil = Math.Round((decimal)(uiuxWorkingDays / (decimal)(NoDaysInMonth(year, month) * uiuxCount)) * 100, 2); } var totalCompanyHours = unit.Days.Get().Where(x => x.Date.Value.Year == year && x.Date.Value.Month == month).Select(x => x.Hours).DefaultIfEmpty(0).Sum(); double Utiliziation = Math.Round(((double)totalCompanyHours / maxPossibleHours) * 100, 2); CompanyReport report = new CompanyReport() { Year = year, Month = month, NumberOfEmployees = numberOfEmployees, NumberOfProjects = unit.Projects.Get().Where(x => x.BeginDate <= Date && (x.EndDate == null || x.EndDate > Date || x.EndDate.Value.Month == month)).Count(), //unit.Days.Get().Where(x => x.Date.Value.Year == year && x.Date.Value.Month == month).Select(x => x.Hours).DefaultIfEmpty(0).Sum() TotalHours = totalCompanyHours, MaxPossibleHours = maxPossibleHours, Utilization = Utiliziation, PMUtilization = pmUtil.Value, PMCount = pmCount, DevUtilization = devUtil, DevCount = devCount, QAUtilization = qaUtil, QACount = qaCount, UIUXUtilization = uiuxUtil, UIUXCount = uiuxCount, Teams = Teams, Projects = unit.Projects.Get(x => x.BeginDate <= Date && (x.EndDate == null || x.EndDate > Date || x.EndDate.Value.Month == month)).Select(x => new CompanyProjectModel() { Name = x.Name, Revenue = x.Amount, Team = x.Team.Name }).ToList() }; return(report); }
public void UpdateCompanyReport(CompanyReport report) { context.Update(report); context.SaveChanges(); }
public void btn_click(object sender, EventArgs e) { Session["report"] = null; ArrayList report = new ArrayList(); CompanyReport cr = new CompanyReport(); Hashtable HtParams = new Hashtable(); cr = new CompanyReport(); cr.idfield = Convert.ToInt32(DatabaseConnection.SqlScalartoObj("SELECT ID FROM QB_CUSTOMERQUERY WHERE TITLE='Fixed1'")); //ex 41; HtParams = new Hashtable(); HtParams.Add("ID", IDCompany.Text); cr.Params = HtParams; cr.Finalize = (Request.Form["print2"] != null || Request.Form["print3"] != null)?false:true; cr.Type = 0; cr.itemPage = 10; cr.morerecord = false; report.Add(cr); foreach (string var in Request.Form) { switch (var) { case "print2": cr = new CompanyReport(); cr.idfield = Convert.ToInt32(DatabaseConnection.SqlScalartoObj("SELECT ID FROM QB_CUSTOMERQUERY WHERE TITLE='Fixed3'")); //ex 43; HtParams = new Hashtable(); HtParams.Add("ID", IDCompany.Text); cr.Params = HtParams; cr.Finalize = (Request.Form["print3"] != null)?false:true; cr.Type = 1; cr.itemPage = 0; report.Add(cr); break; case "print3": cr = new CompanyReport(); cr.idfield = Convert.ToInt32(DatabaseConnection.SqlScalartoObj("SELECT ID FROM QB_CUSTOMERQUERY WHERE TITLE='Fixed4'")); //ex 44; HtParams = new Hashtable(); HtParams.Add("ID", IDCompany.Text); cr.Params = HtParams; cr.Finalize = true; cr.Type = 0; cr.itemPage = 0; report.Add(cr); break; } } Session["report"] = report; string js; js = "<script>"; js += "function SetRef(){"; js += " window.open('/report/htmlreport.aspx');"; js += " self.close();"; js += " parent.HideBox();}"; js += "SetRef();</script>"; SomeJS.Text = js; }
private string encryptkey = "Oyea"; //密钥 #region 执行“目录”控件中的项操作 /// <summary> /// 执行“目录”控件中的项操作 /// </summary> /// <param name="control">控件类型</param> /// <param name="form">所属窗体</param> public void ShowForm(ToolStripMenuItem control, Form form) { switch (control.Tag.ToString()) { case "1": EmployeeInfo employee = new EmployeeInfo(); employee.MdiParent = form; employee.StartPosition = FormStartPosition.CenterScreen; employee.Show(); break; case "2": CompanyInfo company = new CompanyInfo(); company.MdiParent = form; company.StartPosition = FormStartPosition.CenterScreen; company.Show(); break; case "3": Login login = new Login(); login.StartPosition = FormStartPosition.CenterScreen; login.ShowDialog(); form.Dispose(); //释放窗体资源 break; case "5": GoodsIn goodsin = new GoodsIn(); goodsin.MdiParent = form; goodsin.StartPosition = FormStartPosition.CenterScreen; goodsin.Show(); break; case "6": ReGoods regoods = new ReGoods(); regoods.MdiParent = form; regoods.StartPosition = FormStartPosition.CenterScreen; regoods.Show(); break; case "7": GoodsFind stockfind = new GoodsFind(); stockfind.MdiParent = form; stockfind.StartPosition = FormStartPosition.CenterScreen; stockfind.Show(); break; case "8": s sellgoods = new s(); sellgoods.MdiParent = form; sellgoods.StartPosition = FormStartPosition.CenterScreen; sellgoods.Show(); break; case "9": CustomerReGoods customerregoods = new CustomerReGoods(); customerregoods.MdiParent = form; customerregoods.StartPosition = FormStartPosition.CenterScreen; customerregoods.Show(); break; case "10": SellFind sellfind = new SellFind(); sellfind.MdiParent = form; sellfind.StartPosition = FormStartPosition.CenterScreen; sellfind.Show(); break; case "11": ChangeGoods changegoods = new ChangeGoods(); changegoods.MdiParent = form; changegoods.StartPosition = FormStartPosition.CenterScreen; changegoods.Show(); break; case "12": StockAlarm stockalarm = new StockAlarm(); stockalarm.MdiParent = form; stockalarm.StartPosition = FormStartPosition.CenterScreen; stockalarm.Show(); break; case "13": StockFind stockfindall = new StockFind(); stockfindall.MdiParent = form; stockfindall.StartPosition = FormStartPosition.CenterScreen; stockfindall.Show(); break; case "14": EmployeeReport employeereport = new EmployeeReport(); employeereport.MdiParent = form; employeereport.StartPosition = FormStartPosition.CenterScreen; employeereport.Show(); break; case "15": CompanyReport companyreport = new CompanyReport(); companyreport.MdiParent = form; companyreport.StartPosition = FormStartPosition.CenterScreen; companyreport.Show(); break; case "16": GoodsInReport goodsinreport = new GoodsInReport(); goodsinreport.MdiParent = form; goodsinreport.StartPosition = FormStartPosition.CenterScreen; goodsinreport.Show(); break; case "17": GoodsInAnalysisReport sellgodsreport = new GoodsInAnalysisReport(); sellgodsreport.MdiParent = form; sellgodsreport.StartPosition = FormStartPosition.CenterScreen; sellgodsreport.Show(); break; case "18": EmployeeSellReport employeesellreport = new EmployeeSellReport(); employeesellreport.MdiParent = form; employeesellreport.StartPosition = FormStartPosition.CenterScreen; employeesellreport.Show(); break; case "19": GoodsInAnalysisReport goodsinana = new GoodsInAnalysisReport(); goodsinana.MdiParent = form; goodsinana.StartPosition = FormStartPosition.CenterScreen; goodsinana.Show(); break; case "20": SellGoodsAnalysisReport sellana = new SellGoodsAnalysisReport(); sellana.MdiParent = form; sellana.StartPosition = FormStartPosition.CenterScreen; sellana.Show(); break; case "21": SetPopedom setpopedom = new SetPopedom(); setpopedom.MdiParent = form; setpopedom.StartPosition = FormStartPosition.CenterScreen; setpopedom.Show(); break; case "22": ChangePwd changepwd = new ChangePwd(); changepwd.MdiParent = form; changepwd.StartPosition = FormStartPosition.CenterScreen; changepwd.Show(); break; case "23": BakData bakdata = new BakData(); bakdata.MdiParent = form; bakdata.StartPosition = FormStartPosition.CenterScreen; bakdata.Show(); break; case "24": ReBakData rebakdata = new ReBakData(); rebakdata.MdiParent = form; rebakdata.StartPosition = FormStartPosition.CenterScreen; rebakdata.Show(); break; case "25": SysUser sysuser = new SysUser(); sysuser.MdiParent = form; sysuser.StartPosition = FormStartPosition.CenterScreen; sysuser.Show(); break; case "30": CustomerInfo customer = new CustomerInfo(); customer.MdiParent = form; customer.StartPosition = FormStartPosition.CenterScreen; customer.Show(); break; case "31": EmployeeSellAnalysisReport sell = new EmployeeSellAnalysisReport(); sell.MdiParent = form; sell.StartPosition = FormStartPosition.CenterScreen; sell.Show(); break; default: break; } }
protected override void Seed(ApplicationDbContext context) { if (System.Diagnostics.Debugger.IsAttached == false) { // System.Diagnostics.Debugger.Launch(); } // This method will be called after migrating to the latest version. context.Configuration.LazyLoadingEnabled = true; // Generation configuration int companyCount = 3; int uniqueAddressStreetCount = 2; int uniqueAddressCityCount = 5; int userCount = 5; int uniqueUserNameCount = 5; int uniqueUserSurnameCount = 10; int productCount = 20; int employeeCount = 5; int productRatingCount = 10; int productCommentCount = 10; int companyReportCount = 10; int watchedProductCount = 20; int existingProductCount = 40; //int qrCodeCount = 10; int companyStatisticsCountPerCompany = 10; int scanCount = 20; Random random = new Random(); // delete everything context.CompanyStatistics.RemoveRange(context.CompanyStatistics); context.SaveChanges(); context.QRs.RemoveRange(context.QRs); context.SaveChanges(); context.ProductComments.RemoveRange(context.ProductComments); context.SaveChanges(); context.ExistingProducts.RemoveRange(context.ExistingProducts); context.SaveChanges(); context.ProductRatings.RemoveRange(context.ProductRatings); context.SaveChanges(); context.Employees.RemoveRange(context.Employees); context.SaveChanges(); context.WatchedProducts.RemoveRange(context.WatchedProducts); context.SaveChanges(); ((DbSet <ApplicationUser>)context.Users).RemoveRange(context.Users); context.SaveChanges(); context.ProductPictures.RemoveRange(context.ProductPictures); context.SaveChanges(); context.Companies.RemoveRange(context.Companies); context.SaveChanges(); context.Products.RemoveRange(context.Products); context.SaveChanges(); ((DbSet <IdentityRole>)context.Roles).RemoveRange(context.Roles); context.SaveChanges(); context.Statistics.RemoveRange(context.Statistics); context.SaveChanges(); context.Scans.RemoveRange(context.Scans); context.SaveChanges(); // UserRoles context.Roles.Add(new IdentityRole("User")); context.Roles.Add(new IdentityRole("Employee")); context.Roles.Add(new IdentityRole("Administrator")); context.SaveChanges(); // Company for (int i = 0; i < companyCount; ++i) { List <int> nipDigits = new List <int>(new int[10]); List <int> nipWeights = new List <int>(new int[9] { 6, 5, 7, 2, 3, 4, 5, 6, 7 }); int nipLastDigit = 0; for (int j = 0; j < nipWeights.Count; j++) { nipDigits[j] = random.Next(10); nipLastDigit += nipDigits[j] * nipWeights[j]; } nipLastDigit = nipLastDigit % 11; nipDigits[9] = nipLastDigit; Company company = new Company { Name = "companyName" + i, Kind = ((random.Next(2) == 0) ? "Production" : "Services"), AddressStreet = "addressStreet" + random.Next(uniqueAddressStreetCount), AddressZipCode = "CT-" + random.Next(99999), AddressCity = "addressCity" + random.Next(uniqueAddressCityCount), Email = "companyName" + i + "@mail.com", NIP = String.Join("", nipDigits), REGON = random.Next(999999999).ToString(), JoinDate = new DateTime(random.Next(2015, 2017), random.Next(12) + 1, random.Next(25) + 1) }; context.Companies.AddOrUpdate(c => c.Name, company); } context.SaveChanges(); // User var store = new UserStore <ApplicationUser>(context); var manager = new ApplicationUserManager(store); manager.PasswordValidator = new PasswordValidator { RequiredLength = 1, RequireNonLetterOrDigit = false, RequireDigit = false, RequireLowercase = false, RequireUppercase = false, }; for (int i = 0; i < userCount; i++) { List <int> phoneNumber = new List <int>(new int[10]); for (int j = 0; j < phoneNumber.Count; j++) { phoneNumber[j] = random.Next(10); } ApplicationUser user = new ApplicationUser { Name = "name" + i, Surname = "surname" + random.Next(uniqueUserSurnameCount), Email = "user" + i + "@email.com", UserName = "******" + i + "@email.com", EmailConfirmed = true, PasswordHash = ("user" + i).GetHashCode().ToString(), SecurityStamp = "?", PhoneNumber = String.Join("", phoneNumber.ToArray()), TwoFactorEnabled = false, LockoutEnabled = false, AccessFailedCount = 0 }; manager.CreateAsync(user, user.Name).Wait(); if (i == 0) { manager.AddToRoleAsync(user.Id, "Administrator").Wait(); } } // Employee List <Employee> employees = new List <Employee>(employeeCount); for (int i = 0; i < employeeCount; i++) { Employee employee = new Employee { UserId = context.Users.ToList()[random.Next(context.Users.Count())].Id, JoinDate = new DateTime(random.Next(2015, 2018), random.Next(12) + 1, random.Next(25) + 1), CompanyId = context.Companies.ToList()[random.Next(context.Companies.Count())].Id }; employees.Add(employee); manager.AddToRoleAsync(employee.UserId, "Employee").Wait(); } var distinceEmployees = employees.Distinct(new EmployeeEqualityComparer()).ToArray(); context.Employees.AddOrUpdate(e => e.UserId, distinceEmployees); context.SaveChanges(); // Product var products = new List <Product>(productCount); for (int i = 0; i < productCount; i++) { Product product = new Product { Name = "product" + i, Barcode = random.Next(9999999).ToString() + random.Next(999999), Description = "description" + i, CreationDate = new DateTime(random.Next(2015, 2017), random.Next(12) + 1, random.Next(25) + 1),//new DateTime(random.Next(2018, 2019), random.Next(1, 13), random.Next(25) + 1), CountryOfOrigin = "country" + random.Next(10), SuggestedPrice = (decimal)random.Next(201), CompanyId = context.Companies.ToList()[random.Next(context.Companies.Count())].Id }; products.Add(product); } context.Products.AddRange(products); context.SaveChanges(); // Product picture string[] filePaths; try { string appDataPath = AppDomain.CurrentDomain.BaseDirectory + "/App_Data"; var picturesPath = Path.Combine(appDataPath, "products"); filePaths = Directory.GetFiles(picturesPath); } catch (Exception e) { string appDataPath = AppDomain.CurrentDomain.BaseDirectory + "/.../App_Data"; var picturesPath = Path.Combine(appDataPath, "products"); filePaths = Directory.GetFiles(picturesPath); } var pictures = new List <byte[]>(); foreach (var path in filePaths) { var bytes = File.ReadAllBytes(path); pictures.Add(bytes); } var productPictures = new List <ProductPicture>(productCount); for (int i = 0; i < productCount; ++i) { var productPicture = new ProductPicture() { ProductId = products[i].Id, Content = pictures[random.Next(pictures.Count)] }; productPictures.Add(productPicture); } context.ProductPictures.AddRange(productPictures); context.SaveChanges(); // ProductRating List <ProductRating> productRatings = new List <ProductRating>(productRatingCount); for (int i = 0; i < productRatingCount; i++) { int[] rateArray = new[] { 1, 2, 3, 4, 5 }; ProductRating productRating = new ProductRating { Rating = random.Next(1, rateArray.Length), UserId = context.Users.ToList()[random.Next(context.Users.Count())].Id, ProductId = context.Products.ToList()[random.Next(context.Products.Count())].Id, Added = new DateTime(2018, 12, random.Next(28) + 1) }; if (!productRatings.Any(pr => pr.UserId.Equals(productRating.UserId) && pr.ProductId.Equals(productRating.ProductId))) { productRatings.Add(productRating); } } context.ProductRatings.AddOrUpdate(pr => pr.UserId, productRatings.ToArray()); context.SaveChanges(); // WatchedProduct var watchedProductList = new List <WatchedProduct>(watchedProductCount); for (int i = 0; i < watchedProductCount; i++) { WatchedProduct watchedProduct = new WatchedProduct { ApplicationUserId = context.Users.ToList()[random.Next(context.Users.Count())].Id, ProductId = context.Products.ToList()[random.Next(context.Products.Count())].Id }; if (watchedProductList.Any(wp => wp.ApplicationUserId == watchedProduct.ApplicationUserId && wp.ProductId == watchedProduct.ProductId) == false) { watchedProductList.Add(watchedProduct); } } context.WatchedProducts.AddRange(watchedProductList); context.SaveChanges(); // ProductComment for (int i = 0; i < productCommentCount; i++) { var productComment = new ProductComment { ApplicationUserId = context.Users.ToList()[random.Next(context.Users.Count())].Id, ProductId = context.Products.ToList()[random.Next(context.Products.Count())].Id, Comment = "Comment" + i, Date = new DateTime(random.Next(2016, 2018), random.Next(12) + 1, random.Next(25) + 1) }; context.ProductComments.AddOrUpdate(productComment); } context.SaveChanges(); // CompanyReport for (int i = 0; i < companyReportCount; i++) { CompanyReport companyReport = new CompanyReport { Content = "content" + i, CompanyId = context.Companies.ToList()[random.Next(context.Companies.Count())].Id }; context.CompanyReports.AddOrUpdate(cr => cr.Content, companyReport); } context.SaveChanges(); // ExistingProduct for (int i = 0; i < existingProductCount; i++) { ExistingProduct existingProduct = new ExistingProduct { ExpirationDate = new DateTime(random.Next(2018, 2030), random.Next(12) + 1, random.Next(25) + 1), CreationDate = new DateTime(random.Next(2018, 2019), random.Next(1, 13), random.Next(25) + 1), ProductId = context.Products.ToList()[random.Next(context.Products.Count())].Id }; existingProduct.GenerateSecret(); context.ExistingProducts.AddOrUpdate(existingProduct); } context.SaveChanges(); // QR /*List<QR> qrs = new List<QR>(qrCodeCount); * for (int i = 0; i < qrCodeCount; i++) * { * QR qr = new QR * { * ExistingProductId = context.ExistingProducts.ToList()[random.Next(context.ExistingProducts.Count())].Id, * Version = 1, * Content = new byte[10] * }; * qrs.Add(qr); * //context.QRs.AddOrUpdate(q => q.ExistingProductId, qr); * } * var distinctQrs = qrs.Distinct(new QREqualityComparer()).ToArray(); * context.QRs.AddOrUpdate(q => q.ExistingProductId, distinctQrs); * context.SaveChanges();*/ // CompanyStatistics var companyStatistics = new List <CompanyStatistics>(companyCount * companyStatisticsCountPerCompany); foreach (var company in context.Companies) { for (int j = 0; j < companyStatisticsCountPerCompany; j++) { var statistics = new CompanyStatistics() { CompanyId = company.Id, Date = DateTime.Now.AddDays(-j).Date, RegistredProducts = random.Next(10), }; companyStatistics.Add(statistics); } } context.CompanyStatistics.AddRange(companyStatistics); context.SaveChanges(); // Statistics var currentMonth = DateTime.Now.Month; var currentYear = DateTime.Now.Year; var currentMonthBeginning = new DateTime(currentYear, currentMonth, 1); context.Statistics.Add(new Statistics { LastMonthCompanyCount = context.Companies.Where(c => c.JoinDate < currentMonthBeginning).ToList().Count(), LastMonthProductCount = context.Products.Where(p => p.CreationDate < currentMonthBeginning).ToList().Count() }); context.SaveChanges(); // Scans var scans = new List <Scan>(scanCount); for (int i = 0; i < scanCount; ++i) { var scan = new Scan() { UserId = context.Users.ToList()[random.Next(context.Users.Count())].Id, ExistingProductId = context.ExistingProducts.ToList()[random.Next(context.ExistingProducts.Count())].Id, Date = DateTime.Now.AddDays(-i).Date, }; if (scans.Any(s => s.UserId == scan.UserId && s.ExistingProductId == scan.ExistingProductId)) { continue; } scans.Add(scan); } context.Scans.AddRange(scans); context.SaveChanges(); }
public static CompanyReport GetCompanyReport(this UnitOfWork unit, int year, int month, ModelFactory factory) { int days = DateTime.DaysInMonth(year, month); DateTime currentDate = new DateTime(year, month, days); //taking into consideration employee/project who quit/ended in the given month/year var numEmployees = unit.Employees.Get().Where(x => x.BeginDate <= currentDate && (x.EndDate == null || x.EndDate > currentDate || x.EndDate.Value.Month == month)) .Count(); var numProjects = unit.Projects.Get().Where(x => x.BeginDate <= currentDate && (x.EndDate == null || x.EndDate > currentDate || x.EndDate.Value.Month == month)) .Count(); //pm utilization int pmCount = unit.Employees.Get(x => x.RoleId == "MGR") .Where(x => x.BeginDate <= currentDate && (x.EndDate == null || x.EndDate > currentDate || x.EndDate.Value.Month == month)) .Count(); var pmWorkingDays = unit.Days.Get(x => x.Type == DayType.WorkingDay && x.Date.Month == month && x.Date.Year == year) .Where(x => x.Employee.RoleId == "MGR" && x.Employee.BeginDate <= currentDate && (x.Employee.EndDate == null || x.Employee.EndDate > currentDate || x.Employee.EndDate.Value.Month == month)) .Count(); decimal?pmUtil = 0; if ((noDaysInMonth(year, month) * pmCount) != 0) { pmUtil = Math.Round((decimal)(pmWorkingDays / (decimal)(noDaysInMonth(year, month) * pmCount)) * 100, 2); } //qa utilization int qaCount = unit.Employees.Get(x => x.RoleId == "QAE") .Where(x => x.BeginDate <= currentDate && (x.EndDate == null || x.EndDate > currentDate || x.EndDate.Value.Month == month)) .Count(); var qaWorkingDays = unit.Days.Get(x => x.Type == DayType.WorkingDay && x.Date.Month == month && x.Date.Year == year) .Where(x => x.Employee.RoleId == "QAE" && x.Employee.BeginDate <= currentDate && (x.Employee.EndDate == null || x.Employee.EndDate > currentDate || x.Employee.EndDate.Value.Month == month)) .Count(); decimal qaUtil = 0; if (noDaysInMonth(year, month) * qaCount != 0) { qaUtil = Math.Round((decimal)(qaWorkingDays / (decimal)(noDaysInMonth(year, month) * qaCount)) * 100, 2); } //dev utilization int devCount = unit.Employees.Get(x => x.RoleId == "DEV") .Where(x => x.BeginDate <= currentDate && (x.EndDate == null || x.EndDate > currentDate || x.EndDate.Value.Month == month)) .Count(); var devWorkingDays = unit.Days.Get(x => x.Type == DayType.WorkingDay && x.Date.Month == month && x.Date.Year == year) .Where(x => x.Employee.RoleId == "DEV" && x.Employee.BeginDate <= currentDate && (x.Employee.EndDate == null || x.Employee.EndDate > currentDate || x.Employee.EndDate.Value.Month == month)) .Count(); decimal devUtil = 0; if (noDaysInMonth(year, month) * devCount != 0) { devUtil = Math.Round((decimal)(devWorkingDays / (decimal)(noDaysInMonth(year, month) * devCount)) * 100, 2); } //uiux utilization int uiuxCount = unit.Employees.Get(x => x.RoleId == "UIX") .Where(x => x.BeginDate <= currentDate && (x.EndDate == null || x.EndDate > currentDate || x.EndDate.Value.Month == month)) .Count(); var uiuxWorkingDays = unit.Days.Get(x => x.Type == DayType.WorkingDay && x.Date.Month == month && x.Date.Year == year) .Where(x => x.Employee.RoleId == "UIX" && x.Employee.BeginDate <= currentDate && (x.Employee.EndDate == null || x.Employee.EndDate > currentDate || x.Employee.EndDate.Value.Month == month)) .Count(); decimal uiuxUtil = 0; if (noDaysInMonth(year, month) * uiuxCount != 0) { uiuxUtil = Math.Round((decimal)(uiuxWorkingDays / (decimal)(noDaysInMonth(year, month) * uiuxCount)) * 100, 2); } //total working hours for every employee var totalHours = unit.Days.Get() .Where(x => x.Date.Year == year && x.Date.Month == month) .Select(x => (int?)x.Hours) .Sum() ?? 0; //var totalHours = unit.Teams.Get().SelectMany(x => x.Engagements).Select(x => x.Employee) // .SelectMany(x => x.Days) // .Where(x => x.Date.Month == month && x.Date.Year == year && x.Type == DayType.WorkingDay) // .Select(y => (int?)y.Hours) // .Sum() ?? 0; int maxPossibleTotalHours = noDaysInMonth(year, month) * 8 * numEmployees; int missingEntriesTotal = 0; int daysInMonth = noDaysInMonth(year, month); var allTeams = unit.Teams.Get().ToList(); List <CompanyReportTeams> overtimeTeams = new List <CompanyReportTeams>(); foreach (var team in allTeams) { decimal overtimehours = 0; var employees = unit.Engagements.Get().Where(x => x.Team.Id == team.Id).Select(x => x.Employee).ToList(); var projects = team.Projects; int missingEntriesTeam = 0; decimal hoursTeam = 0; decimal hoursTeam1 = 0; foreach (var employee in employees) { decimal hoursEmp = 0; int daysCount = 0; decimal totHours = 0; foreach (var project in projects) { var hoursPro = unit.Days.Get().Where(x => x.Date.Month == month && x.Date.Year == year && employee.Id == x.Employee.Id) .SelectMany(t => t.Tasks) .Where(x => x.Project.Id == project.Id) .Select(h => h.Hours) .DefaultIfEmpty(0) .Sum(); totHours += hoursPro; } hoursTeam1 += totHours; foreach (var day in employee.Days) { if (day.Hours > 8 && day.Date.Month == month && day.Date.Year == year && day.Type == DayType.WorkingDay) { overtimehours += day.Hours - 8; } if (day.Date.Month == month && day.Date.Year == year && day.Type == DayType.WorkingDay) { hoursEmp += day.Hours; daysCount++; } } hoursTeam += hoursEmp; missingEntriesTeam += (daysInMonth - daysCount); } int maxHours = noDaysInMonth(year, month) * employees.Count() * 8; var teamUtil = Math.Round(((double)hoursTeam1 / maxHours) * 100, 2); CompanyReportTeams teamToAdd = new CompanyReportTeams() { TeamName = team.Name, OvertimeHours = overtimehours, TeamMissingHours = missingEntriesTeam, TeamHours = hoursTeam1, Utilization = teamUtil }; missingEntriesTotal += missingEntriesTeam; overtimeTeams.Add(teamToAdd); } var allProjects = unit.Projects.Get().Where(x => x.BeginDate <= currentDate && (x.EndDate == null || x.EndDate > currentDate || x.EndDate.Value.Month == month)) .ToList(); List <CompanyReportProjects> revenueProjects = new List <CompanyReportProjects>(); foreach (var project in allProjects) { CompanyReportProjects projectToAdd = new CompanyReportProjects() { ProjectName = project.Name, Revenue = project.Amount }; revenueProjects.Add(projectToAdd); } //creating a report var companyReport = new CompanyReport { NumEmployees = numEmployees, NumProjects = numProjects, TotalHours = totalHours, MaxPossibleTotalHours = maxPossibleTotalHours, MissingEntries = missingEntriesTotal, PMUtilization = pmUtil.Value, PMCount = pmCount, DEVUtilization = devUtil, DEVCount = devCount, QAUtilization = qaUtil, QACount = qaCount, UIUXUtilization = uiuxUtil, UIUXCount = uiuxCount, OvertimeHoursTeams = overtimeTeams, RevenueProjects = revenueProjects }; return(companyReport); }
public void AddCompanyReport(CompanyReport report) { context.Add(report); context.SaveChanges(); }