public ActionResult UploadInvoiceFile(UploadInvoiceModel model, int id = 0) { int? historyActionId = null; if (!Authorized(RoleType.SystemManager)) return Error(Loc.Dic.error_no_permission); if (!ModelState.IsValid) { ViewBag.OrderID = id; return View(model); } Order order; bool isModelValid = true; using (OrdersHistoryRepository ordersHistoryRep = new OrdersHistoryRepository(CurrentUser.CompanyId, CurrentUser.UserId, id)) using (OrderToAllocationRepository orderAlloRep = new OrderToAllocationRepository()) using (OrdersRepository ordersRep = new OrdersRepository(CurrentUser.CompanyId)) { order = ordersRep.GetEntity(id, "Budget", "Orders_OrderToAllocation"); if (order == null) return Error(Loc.Dic.error_order_get_error); if (order.StatusId < (int)StatusType.ApprovedPendingInvoice) return Error(Loc.Dic.error_order_not_approved); DateTime minValueDate = new DateTime(order.Budget.Year, order.Orders_OrderToAllocation.Max(x => x.MonthId), FIRST_DAY_OF_MONTH); if (model.ValueDate < minValueDate) { isModelValid = false; ModelState.AddModelError("ValueDate", Loc.Dic.error_ValueDateHaveToBeLaterThenLatestAllocationDate); } if (!model.File.FileName.Contains('.')) { isModelValid = false; ModelState.AddModelError("File", Loc.Dic.validation_FileNameIsInvalid); } if (!isModelValid) { ViewBag.OrderID = id; return View(model); } if (!model.isUpdate) { order.StatusId = (int)StatusType.InvoiceScannedPendingOrderCreator; order.LastStatusChangeDate = DateTime.Now; } order.InvoiceNumber = model.InvoiceNumber; order.InvoiceDate = model.InvoiceDate; order.ValueDate = model.ValueDate; if (ordersRep.Update(order) == null) return Error(Loc.Dic.error_database_error); historyActionId = (int)HistoryActions.InvoiceScanned; Orders_History orderHistory = new Orders_History(); if (historyActionId.HasValue) ordersHistoryRep.Create(orderHistory, historyActionId.Value); SaveUniqueFile(model.File, INVOICE_FOLDER_NAME, id); //EmailMethods emailMethods = new EmailMethods("*****@*****.**", Loc.Dic.OrdersSystem, "noreply50100200"); //emailMethods.sendGoogleEmail(order.User.Email, order.User.FirstName, Loc.Dic.OrderStatusUpdateEvent, Loc.Dic.OrderStatusOf + " " + order.OrderNumber + " " + Loc.Dic.OrderStatusChangedTo + Translation.Status((StatusType)order.StatusId) + "\n" + Url.Action("MyOrders", "Orders", null, "http")); SendNotifications.OrderStatusChanged(order, CurrentUser, Url); return RedirectToAction("Index"); } }
public ActionResult UploadInvoiceFile(int id = 0) { if (!Authorized(RoleType.SystemManager)) return Error(Loc.Dic.error_no_permission); Order order; using (OrdersRepository ordersRep = new OrdersRepository(CurrentUser.CompanyId)) { order = ordersRep.GetEntity(id); } if (order == null) return Error(Loc.Dic.error_order_not_found); if (order.StatusId < (int)StatusType.ApprovedPendingInvoice) return Error(Loc.Dic.error_order_not_approved); ViewBag.OrderID = id; if (order.StatusId > (int)StatusType.ApprovedPendingInvoice) { UploadInvoiceModel model = new UploadInvoiceModel(); model.InvoiceNumber = order.InvoiceNumber; model.InvoiceDate = order.InvoiceDate.Value; model.ValueDate = order.ValueDate.Value; model.isUpdate = true; return View(model); } else { return View(); } }