예제 #1
0
        public int GetPaydayEmployer(int id, string fromStr, string toStr)
        {
            var employer = _context.Employers.Find(id);

            double salary = employer.Salary;
            string group  = employer.Group;

            if (fromStr.Length < 1 || toStr.Length < 1)
            {
                return(0);
            }

            int      dayFrom      = Int32.Parse(fromStr.Substring(0, 2));
            int      monthFrom    = Int32.Parse(fromStr.Substring(3, 2));
            int      yearFrom     = Int32.Parse(fromStr.Substring(6, 2));
            DateTime dateTimeFrom = new DateTime(yearFrom, monthFrom, dayFrom);

            int      dayTo      = Int32.Parse(toStr.Substring(0, 2));
            int      monthTo    = Int32.Parse(toStr.Substring(3, 2));
            int      yearTo     = Int32.Parse(toStr.Substring(6, 2));
            DateTime dateTimeTo = new DateTime(yearTo, monthTo, dayTo);

            int countMonth = (int)(dateTimeTo - dateTimeFrom).TotalDays / 30;

            // TODO: fix this
            int expYear = (int)(
                (DateTime.Parse(employer.WorkedAt) - DateTime.Now.AddMonths(countMonth)
                ).TotalDays / 365);

            // SUB
            List <double> subEmployersSalary = new List <double>();

            var subEmployers = _context.Employers
                               .Where(x => x.BossesId == id)
                               .Select(x => x.Id)
                               .ToList();

            foreach (var i in  subEmployers)
            {
                if (i == id)
                {
                    continue;
                }

                subEmployersSalary.Add(
                    GetPaydayEmployer(i, "", "")
                    );
            }

            var paydayHelper = new Payday();
            int result       = (int)paydayHelper
                               .GetPaydayEmployer(salary, group, expYear, subEmployersSalary);

            return(result * countMonth - countMonth);
        }