Example #1
0
        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);
        }
Example #2
0
        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);
            }
        }
Example #4
0
        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("&amp;", "&");
                        var companyName = childNodes[3];
                        company.Name = companyName.InnerText.Replace("&amp;", "&");

                        var state = childNodes[5];
                        company.State = state.InnerText.Replace("&amp;", "&");
                        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("&nbsp;", "");
                            if (format.ChildNodes != null && format.ChildNodes.Count == 3)
                            {
                                report.Format      = format.ChildNodes[0].InnerText.Replace("&nbsp;", "");
                                report.Interactive = format.ChildNodes[2].GetAttributeValue("href").Replace("&amp;", "&");
                            }

                            report.URL = format.GetAttributeValue("href").Replace("&amp;", "&");

                            var name = childNodes[5];
                            report.Name = name.InnerText.Replace("&nbsp;", "");

                            DateTime date = DateTime.Now;
                            if (DateTime.TryParse(childNodes[7].InnerText, out date))
                            {
                                report.FilingDate = date;
                            }

                            report.CIK = selectedCompany.CIK;

                            Reports.Add(report);
                        }
                    }
                }
            }
            return(Reports);
        }
Example #8
0
 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;
     }
 }
Example #9
0
 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;
     }
 }
Example #10
0
        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);
        }
Example #13
0
        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);
        }
Example #16
0
        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);
        }
Example #17
0
 public void UpdateCompanyReport(CompanyReport report)
 {
     context.Update(report);
     context.SaveChanges();
 }
Example #18
0
        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;
        }
Example #19
0
        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;
            }
        }
Example #20
0
        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();
        }
Example #21
0
        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);
        }
Example #22
0
 public void AddCompanyReport(CompanyReport report)
 {
     context.Add(report);
     context.SaveChanges();
 }