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)); }
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")); }
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")); }