示例#1
0
        public ActionResult Create([Bind(Include = "Id,Name,Description,Cost,IsMale,Duration")] Price price)
        {
            if (ModelState.IsValid)
            {
                db.Prices.Add(price);
                db.SaveChanges();
                return(RedirectToAction("Index"));
            }

            return(View(price));
        }
        public ActionResult Create([Bind(Include = "Id,Name")] Barbershop barbershop)
        {
            if (ModelState.IsValid)
            {
                db.Barbershops.Add(barbershop);
                db.SaveChanges();
                return(RedirectToAction("Index"));
            }

            return(View(barbershop));
        }
示例#3
0
        public ActionResult Create(Employee employee, HttpPostedFileBase upimage = null)
        {
            if (!ModelState.IsValid)
            {
                return(View(employee));
            }

            if (upimage != null)
            {
                byte[] imageData = null;
                using (var binaryReader = new BinaryReader(upimage.InputStream))
                {
                    imageData = binaryReader.ReadBytes(upimage.ContentLength);
                }

                employee.Image = imageData;
            }

            db.Employees.Add(employee);
            db.SaveChanges();
            return(RedirectToAction("Index"));
        }
        public ActionResult AutoCreateTimeSheet()
        {
            var currendDate = DateTime.Now;
            var days        = DateTime.DaysInMonth(currendDate.Year, currendDate.Month);

            var previewDate = currendDate.AddMonths(-1);
            var previewName = string.Join(string.Empty, previewDate.Month.ToString(), "-",
                                          previewDate.Year.ToString(), ".tmp");

            var previewTimeSheet   = db.TimeSheets.FirstOrDefault(x => x.Name.Contains(previewName));
            var employeeDictionary = new Dictionary <Employee, int>();

            if (previewTimeSheet != null)
            {
                var previewFile         = previewTimeSheet.File;
                var previewTempFileName = Path.GetTempFileName();

                using (var stream = new FileStream(previewTempFileName, FileMode.Create))
                {
                    stream.Write(previewFile, 0, previewFile.Length);
                }

                using (var sr = new StreamReader(previewTempFileName, Encoding.GetEncoding(1251)))
                {
                    var line = sr.ReadLine();
                    while ((line = sr.ReadLine()) != null)
                    {
                        var lengthEmployeeId = line.IndexOf(';');
                        var preEmployeeId    = int.Parse(line.Substring(0, lengthEmployeeId));
                        var preEmployee      = db.Employees.First(x => x.Id == preEmployeeId);

                        if (preEmployee.BarbershopId != 3)
                        {
                            continue;
                        }

                        var preCounter = 0;
                        var preLastDay = line.Substring(line.Length - 4, 1);
                        var lastDay    = line.Substring(line.Length - 2, 1);

                        switch (preLastDay)
                        {
                        case "в" when lastDay == "р":
                            preCounter = 1;
                            break;

                        case "р" when lastDay == "в":
                            preCounter = -1;
                            break;

                        case "р" when lastDay == "р":
                            preCounter = -2;
                            break;
                        }

                        employeeDictionary.Add(preEmployee, preCounter);
                    }
                }
            }

            var path = Path.GetTempFileName();

            var file         = new FileStream(path, FileMode.Append);
            var streamWriter = new StreamWriter(file, Encoding.GetEncoding(1251));

            streamWriter.Write(";");
            for (var i = 1; i <= days; i++)
            {
                streamWriter.Write(string.Join(string.Empty, i, ";"));
            }

            streamWriter.WriteLine();

            foreach (var employee in db.Employees.OrderBy(x => x.BarbershopId))
            {
                streamWriter.Write(string.Join(string.Empty, employee.Id, ";"));

                var counter = 0;
                if (employeeDictionary.ContainsKey(employee))
                {
                    counter = employeeDictionary[employee];
                }

                for (var i = 0; i < days; i++)
                {
                    var dayDate = new DateTime(currendDate.Year, currendDate.Month, i + 1);
                    if (employee.BarbershopId != 3)
                    {
                        streamWriter.Write(dayDate.DayOfWeek == DayOfWeek.Sunday
                            ? string.Join(string.Empty, "в", ";")
                            : string.Join(string.Empty, "р", ";"));
                    }
                    else
                    {
                        if (counter < 2 && counter >= 0)
                        {
                            streamWriter.Write(string.Join(string.Empty, "р", ";"));
                        }
                        else
                        {
                            streamWriter.Write(string.Join(string.Empty, "в", ";"));
                            if (counter != -1)
                            {
                                counter = -2;
                            }
                        }
                    }

                    counter++;
                }

                streamWriter.WriteLine();
            }
            streamWriter.Close();

            var timeSheetName = string.Join(string.Empty, currendDate.Month.ToString(), "-",
                                            currendDate.Year.ToString(), ".tmp");
            var timeSheet = db.TimeSheets.FirstOrDefault(x => x.Name.Contains(timeSheetName));

            file = new FileStream(path, FileMode.Open);
            byte[] fileByte = null;
            using (var binaryReader = new BinaryReader(file))
            {
                fileByte = binaryReader.ReadBytes((int)file.Length);
            }

            if (timeSheet != null)
            {
                timeSheet.File = fileByte;
            }
            else
            {
                timeSheet = new TimeSheet
                {
                    Name = timeSheetName,
                    File = fileByte
                };
                db.TimeSheets.Add(timeSheet);
            }

            db.SaveChanges();

            return(RedirectToAction("Index"));
        }
示例#5
0
        public ActionResult Record(string barbershop, string employee, string price, Reception reception)
        {
            if (reception.DateTime.Hour < 8 || reception.DateTime.Hour > 19)
            {
                ViewBag.Error = "Парикмахерская работает с 8 до 20. Укажите другое время";
                return(View(LoadRecordModel()));
            }

            var employeeId      = int.Parse(employee);
            var currentEmployee = _db.Employees.First(x => x.Id == employeeId);

            if (reception.DateTime.DayOfWeek == DayOfWeek.Sunday && currentEmployee.BarbershopId != 3)
            {
                ViewBag.Error = "Парикмахерская не работает в воскресенье. Пожалуйста, выберите другой день или 3 парикмахерскую.";
                return(View(LoadRecordModel()));
            }
            else if (reception.DateTime.DayOfWeek == DayOfWeek.Sunday && currentEmployee.BarbershopId == 3 && reception.DateTime.Hour > 17)
            {
                ViewBag.Error = "Парикмахерская работает с 8 до 18. Укажите другое время";
                return(View(LoadRecordModel()));
            }

            if (currentEmployee.BarbershopId == 3)
            {
                var receptionDay  = reception.DateTime.Day;
                var currendDate   = DateTime.Now;
                var nameTimeSheet = string.Join(string.Empty, currendDate.Month, "-", currendDate.Year);

                var timeSheet = _db.TimeSheets.First(x => x.Name.Contains(nameTimeSheet));

                var timeSheetFile = timeSheet.File;
                var tempFileName  = Path.GetTempFileName();

                using (var stream = new FileStream(tempFileName, FileMode.Create))
                {
                    stream.Write(timeSheetFile, 0, timeSheetFile.Length);
                }

                using (var sr = new StreamReader(tempFileName, Encoding.GetEncoding(1251)))
                {
                    var line = sr.ReadLine();
                    while ((line = sr.ReadLine()) != null)
                    {
                        var strEmployeeId = line.Substring(0, line.IndexOf(';'));
                        if (int.Parse(strEmployeeId) != employeeId)
                        {
                            continue;
                        }

                        line = line.Replace(string.Join(string.Empty, strEmployeeId, ";"), string.Empty);

                        for (var i = 0; i < line.Split(';').Length; i++)
                        {
                            if (i + 1 != receptionDay)
                            {
                                continue;
                            }

                            var jobStatus = line.Split(';')[i];
                            if (jobStatus.Contains('о'))
                            {
                                ViewBag.Error = "Парикмахер в отпуске.";
                                return(View(LoadRecordModel()));
                            }
                            else if (jobStatus.Contains('у'))
                            {
                                ViewBag.Error = "Парикмахер уволен.";
                                return(View(LoadRecordModel()));
                            }
                            else if (jobStatus.Contains('б'))
                            {
                                ViewBag.Error = "Парикмахер на больничном.";
                                return(View(LoadRecordModel()));
                            }
                            else if (jobStatus.Contains('в'))
                            {
                                ViewBag.Error = "Парикмахер на выходном.";
                                return(View(LoadRecordModel()));
                            }
                        }
                    }
                }
            }

            var priceId = int.Parse(price);

            reception.PriceId = priceId;
            reception.Price   = _db.Prices.First(x => x.Id == priceId);

            var success     = true;
            var timeOfWorks = "К парихмахеру записаны:";
            List <Reception> listSelecteDayReception;

            using (var db = new NetworkHairdressingContext())
            {
                listSelecteDayReception = new List <Reception>(db.Receptions.Where(x =>
                                                                                   x.DateTime.Day == reception.DateTime.Day &&
                                                                                   x.DateTime.Month == reception.DateTime.Month &&
                                                                                   x.DateTime.Year == reception.DateTime.Year &&
                                                                                   x.EmployeeId == employeeId).OrderBy(x => x.DateTime).ToList());
            }

            foreach (var item in listSelecteDayReception)
            {
                var itemPriceDuration      = _db.Prices.First(x => x.Id == item.PriceId).Duration;
                var receptionPriceDuration = _db.Prices.First(x => x.Id == reception.PriceId).Duration;

                var startTime = item.DateTime;
                var endTime   = item.DateTime.AddMinutes(itemPriceDuration);

                if (reception.DateTime < endTime && startTime < reception.DateTime.AddMinutes(receptionPriceDuration))
                {
                    success = false;
                }

                timeOfWorks = string.Join(" ", timeOfWorks, "\n\tс ", startTime.ToShortTimeString(), " до ",
                                          endTime.ToShortTimeString(), "\n");
            }

            if (!success)
            {
                ViewBag.Error = string.Join(" ", timeOfWorks, "Ваша услуга длится ", reception.Price.Duration, " минут.");
                return(View(LoadRecordModel()));
            }

            var dbReception = new Reception
            {
                DateTime      = reception.DateTime,
                AspNetUsersId = User.Identity.GetUserId(),
                EmployeeId    = currentEmployee.Id,
                PriceId       = priceId
            };

            _db.Receptions.Add(dbReception);
            _db.SaveChanges();

            ViewBag.Success = "Вы успешно записались!";

            return(RedirectToAction("Record"));
        }