public async Task <IActionResult> Delete(DayWork dayWork)
 {
     try
     {
         if (await _context.DayWorks.AnyAsync(dw => dw.DayWorkID == dayWork.DayWorkID))
         {
             _context.DayWorks.Remove(dayWork);
             await _context.SaveChangesAsync();
         }
         return(RedirectToAction(nameof(Index)));
     }
     catch (DbUpdateConcurrencyException /* ex */)
     {
         //Log the error (uncomment ex variable name and write a log.)
         return(RedirectToAction(nameof(Delete), new { id = dayWork.DayWorkID, concurrencyError = true }));
     }
 }
        public async Task <IActionResult> Create([Bind("DayWorkID,Date,TaskID,Type,Description,Qty,Truck,Scaffolder,NumOfWorkers")] DayWork dayWork, string preUrl)
        {
            try
            {
                if (ModelState.IsValid)
                {
                    _context.Add(dayWork);
                    await _context.SaveChangesAsync();

                    return(RedirectToAction("ViewDayWorks", "Tasks", new { id = dayWork.TaskID, preUrl }));
                }
            }
            catch (DbUpdateException ex)
            {
                SqlException innerException = ex.InnerException as SqlException;
                switch (innerException.Number)
                {
                case 2627:     //Violation of primary key. Handle Exception
                    ModelState.AddModelError("", "Unable to create. " +
                                             "Assign a new Day Work No. and try again." +
                                             "if the problem persists, please contact your system administrator.");
                    break;

                case 2601:
                    ModelState.AddModelError("", "Unable to save creation. " +
                                             "Assign a new Day Work No. and try again." +
                                             "if the problem persists, please contact your system administrator."); break;

                default:
                    ModelState.AddModelError("", "Unable to save changes. " +
                                             "Try again, and if the problem persists, " +
                                             "please contact your system administrator.");
                    break;
                }
                //Log the error (uncomment ex variable name and write a log.
                Console.Write(ex);
            }
            return(View(dayWork));
        }
Example #3
0
        /// <summary>
        /// Оформление заказа
        /// </summary>
        /// <param name="time">Выбранное время</param>
        /// <param name="notes">Заметки</param>
        /// <param name="where_eat">Место питания</param>
        /// <param name="allprice">Итоговая сумма</param>
        /// <returns>false если время уже занято, иначе true</returns>
        public bool Post(string time, string notes, string where_eat, int allprice)
        {
            Dictionary <string, string> dayName = new Dictionary <string, string>(7);

            dayName.Add("Monday", "Понедельник");
            dayName.Add("Tuesday", "Вторник");
            dayName.Add("Wednesday", "Среда");
            dayName.Add("Thursday", "Четверг");
            dayName.Add("Friday", "Пятница");
            dayName.Add("Saturday", "Суббота");
            dayName.Add("Sunday", "Воскресенье");

            //Название сегодняшнего дня
            string Today = dayName[DateTime.Now.DayOfWeek.ToString()];

            using (var db = new Contexts())
            {
                //Выбираю день с названием сегодняшнего
                DayWork day = new DayWork();
                day = db.DayWork.Where(d => d.Name == Today).FirstOrDefault();

                //Выбираю из доступных времен заказов только сегодняшнее и по выбранному времени
                FreeTime t = new FreeTime();
                t = db.FreeTime.Where(c => c.Time == time && c.DayWorkID == day.DayWorkID)
                    .FirstOrDefault();

                //Проверяю, не успели ли его занять
                if (t.cur_amount + 1 <= t.max_amount)
                {
                    ++t.cur_amount;

                    int id_user;

                    CookieHeaderValue cookie = Request.Headers.GetCookies("user_token").FirstOrDefault();
                    if (cookie != null)
                    {
                        //Уникальный идентификатор пользователя из куки
                        id_user = Convert.ToInt32(cookie["user_token"].Value);

                        //Заполняю заказ
                        Order       order = new Order();
                        List <Cart> cart  = db.Cart.Where(c => c.UserId == id_user).ToList();
                        order.Notes     = notes;
                        order.OrderTime = DateTime.Now;
                        order.ReadyTime = time;
                        order.Status    = 0;
                        order.UserId    = id_user;
                        order.Sum       = allprice;
                        if (where_eat == "true")
                        {
                            order.WhereEat = true;
                        }
                        else
                        {
                            order.WhereEat = false;
                        }
                        db.Orders.Add(order);
                        db.SaveChanges();
                        foreach (Cart c in cart)
                        {
                            OrderItems orderItems = new OrderItems();
                            orderItems.Amount   = c.Amount;
                            orderItems.MenuItem = db.MenuItems.Where(m => m.Id == c.MenuItemId).FirstOrDefault();
                            orderItems.Sum      = c.Amount * orderItems.MenuItem.Price;
                            orderItems.OrderId  = order.OrderID;
                            db.OrderItems.Add(orderItems);
                        }

                        //Чистим корзину
                        foreach (Cart c in cart)
                        {
                            db.Cart.Remove(c);
                        }
                        db.SaveChanges();

                        //Формирование номера заказа
                        string tmp = DateTime.Now.Year.ToString().Substring(2);
                        if (DateTime.Now.Month.ToString().Length == 1)
                        {
                            tmp += "0" + DateTime.Now.Month.ToString();
                        }
                        else
                        {
                            tmp += DateTime.Now.Month.ToString();
                        }
                        if (DateTime.Now.Day.ToString().Length == 1)
                        {
                            tmp += "0" + DateTime.Now.Day.ToString();
                        }
                        else
                        {
                            tmp += DateTime.Now.Day.ToString();
                        }
                        if (DateTime.Now.Minute.ToString().Length < 2)
                        {
                            tmp += "0" + DateTime.Now.Minute.ToString();
                        }
                        else
                        {
                            tmp += DateTime.Now.Minute.ToString();
                        }
                        if (DateTime.Now.Hour.ToString().Length < 2)
                        {
                            tmp += "0" + DateTime.Now.Hour.ToString();
                        }
                        else
                        {
                            tmp += DateTime.Now.Hour.ToString();
                        }
                        if (order.OrderID % 100 < 10)
                        {
                            tmp += "0" + (order.OrderID % 100).ToString();
                        }
                        else
                        {
                            tmp += (order.OrderID % 100).ToString();
                        }
                        order.NumberOrder = tmp;
                        db.SaveChanges();
                    }

                    return(true);
                }
                else //Если не успели
                {
                    return(false);
                }
            }
        }
        public async Task <IActionResult> Edit(int?id, string submit, byte[] rowVersion, DayWork obj, string preUrl)
        {
            switch (submit)
            {
            case "Save As New D/W":
            {
                IActionResult newDW = await Create(obj, preUrl);

                return(newDW);
            }
            }

            if (id == null)
            {
                return(NotFound());
            }

            var dayWorkToUpdate = await _context.DayWorks.SingleOrDefaultAsync(dw => dw.DayWorkID == id);

            if (dayWorkToUpdate == null)
            {
                DayWork deletedDayWork = new DayWork();
                await TryUpdateModelAsync(deletedDayWork);

                ModelState.AddModelError(string.Empty, "Unable to save changes. The Day Work you want to update wa deleted by another user.");
                return(View(deletedDayWork));
            }

            _context.Entry(dayWorkToUpdate).Property("RowVersion").OriginalValue = rowVersion;

            if (await TryUpdateModelAsync(dayWorkToUpdate, "", dw => dw.Date, dw => dw.Type,
                                          dw => dw.Description, dw => dw.Qty,
                                          dw => dw.Truck, dw => dw.Scaffolder, dw => dw.NumOfWorkers))
            {
                try
                {
                    await _context.SaveChangesAsync();

                    return(Redirect(preUrl));
                }
                catch (DbUpdateConcurrencyException ex)
                {
                    var exceptionEntry = ex.Entries.Single();
                    var clientValue    = (DayWork)exceptionEntry.Entity;
                    var databaseEntry  = exceptionEntry.GetDatabaseValues();
                    if (databaseEntry == null)
                    {
                        ModelState.AddModelError(string.Empty, "Unable to save changes. This Day work was deleted by another user.");
                    }
                    else
                    {
                        var databaseValues = (DayWork)databaseEntry.ToObject();

                        if (databaseValues.Date != clientValue.Date)
                        {
                            ModelState.AddModelError("Date", $"Current value: {databaseValues.Date}");
                        }
                        if (databaseValues.Type != clientValue.Type)
                        {
                            ModelState.AddModelError("Type", $"Current Type: {databaseValues.Type}");
                        }
                        if (databaseValues.Description != clientValue.Description)
                        {
                            ModelState.AddModelError("Description", $"Current Description: {databaseValues.Description}");
                        }
                        if (databaseValues.Qty != clientValue.Qty)
                        {
                            ModelState.AddModelError("Qty", $"Current Qty: {databaseValues.Qty}");
                        }
                        if (databaseValues.Truck != clientValue.Truck)
                        {
                            ModelState.AddModelError("Truck", $"Current Truck: {databaseValues.Truck}");
                        }
                        if (databaseValues.Scaffolder != clientValue.Scaffolder)
                        {
                            ModelState.AddModelError("Scaffolder", $"Current Scaffolder: {databaseValues.Scaffolder}");
                        }
                        if (databaseValues.NumOfWorkers != clientValue.NumOfWorkers)
                        {
                            ModelState.AddModelError("NumOfWorkers", $"Current NumOfWorkers: {databaseValues.NumOfWorkers}");
                        }

                        ModelState.AddModelError("", "The record you attempted to edit " +
                                                 "was modified by another user after you got the original value.");
                        ModelState.AddModelError("", "The edit operation was canceled and the current valurs in the database " +
                                                 "have been displayed.");
                        ModelState.AddModelError("", "If you still want to edit this record, click the save button again. " +
                                                 "Otherwise click the Back to list to the previous page.");
                        dayWorkToUpdate.RowVersion = (byte[])databaseValues.RowVersion;
                        ModelState.Remove("RowVersion");
                    }
                }
            }
            //ViewData["TaskID"] = new SelectList(_context.Tasks, "TaskID", "TaskID", dayWorkToUpdate.TaskID);
            PopulateDropDownList(dayWorkToUpdate.TaskID);
            return(View(dayWorkToUpdate));
        }