private async Task <AllowanceViewModel> GetCreateViewModel() { var user = await userManager.GetUserAsync(HttpContext.User); var viewModel = new AllowanceViewModel(); List <AllowanceType> allowanceTypes = _context.AllowanceType.Where(e => e.IsActive).ToList(); viewModel.ExistingAllowances = _context.Allowance.Where(e => e.AssignedById == user.Id && e.CreatedOn > DateTime.Now.AddMonths(-3)).ToList(); List <AllowanceType> tempAllowanceTypes = new List <AllowanceType>(); allowanceTypes.ForEach(model => { model.catagoriesList = model.Categories != null ? JsonConvert.DeserializeObject <List <Category> >(model.Categories) : null; if (model.catagoriesList != null && model.catagoriesList.Exists(e => e.CategoryId == user.CategoryId)) { tempAllowanceTypes.Add(model); } }); viewModel.AllowanceTypes = tempAllowanceTypes.Select(e => new SelectListItem { Text = e.AllowanceTypeName, Value = e.AllowanceTypeId.ToString() }).ToList(); viewModel.AllowanceTypesDetails = _context.AllowanceType.Where(e => e.IsActive).ToList(); if (User.IsInRole(Constants.ADMIN)) { viewModel.AssignedToItems = _context.User.Where(e => e.IsActive).Select(e => new SelectListItem { Text = e.Name, Value = e.Id }).ToList(); } else if (User.IsInRole(Constants.TL)) { viewModel.AssignedToItems = _context.User.Where(e => e.CategoryId == user.CategoryId).Select(e => new SelectListItem { Text = e.Name, Value = e.Id }).ToList(); } viewModel.AllowanceTypes.Add(new SelectListItem { Text = "Select Allowance Type", Value = string.Empty, Selected = true }); if (viewModel.AssignedToItems != null && viewModel.AssignedToItems.Count > 0) { viewModel.AssignedToItems.Add(new SelectListItem { Text = "Assign to", Value = string.Empty, Selected = true }); } return(viewModel); }
public async Task <IActionResult> Create(AllowanceViewModel viewModel) { if (ModelState.IsValid) { var user = await userManager.GetUserAsync(HttpContext.User); var allowance = new Allowance(); allowance.Description = viewModel.Comments; allowance.ApprovedStatus = ApprovedStatus.PENDING; allowance.AllowanceType = _context.AllowanceType.SingleOrDefault(e => e.AllowanceTypeId.ToString() == viewModel.AllowanceTypeId); allowance.AllowanceDates = JsonConvert.SerializeObject(AllowanceDates); allowance.NumberOfDays = AllowanceDates.Count(); allowance.Price = viewModel.Price; allowance.CreatedOn = DateTime.Now; allowance.CreatedBy = user; allowance.AssignedBy = user; allowance.AssignedCategory = _context.Category.SingleOrDefault(e => e.CategoryId == user.CategoryId); allowance.Month = Convert.ToDateTime(AllowanceDates.FirstOrDefault()); _context.Add(allowance); await _context.SaveChangesAsync(); if (user.Category.CategoryName == "PROCUREMENT") { ApplicationUser teamLeader = (from tl in _context.User join role in _context.UserRoles on tl.Id equals role.UserId where tl.CategoryId == user.CategoryId select tl).FirstOrDefault(); if (teamLeader?.Id != null) { await Task.Run(() => emailService.SendEmailAsync(teamLeader.Email, "Allowance " + allowance.ApprovedStatus, GetProcurementAllowanceHtml(allowance, user.Name))); } } return(RedirectToAction(nameof(Index))); } viewModel.AllowanceTypes = _context.AllowanceType.Where(e => e.IsActive).Select(e => new SelectListItem { Text = e.AllowanceTypeName, Value = e.AllowanceTypeId.ToString(), Selected = e.AllowanceTypeId.ToString() == viewModel.AllowanceTypeId ? true : false }).ToList(); viewModel.ApprovedStatus = Enum.GetValues(typeof(ApprovedStatus)).Cast <ApprovedStatus>().Select(v => new SelectListItem { Text = v.ToString(), Value = ((int)v).ToString(), Selected = ((int)v).ToString() == viewModel.ApprovedStatusId ? true : false }).ToList(); return(View(viewModel)); }
public ActionResult Index(AllowanceViewModel Model) { //1. 設定開立折讓資訊 Allowance invc = new Allowance(); invc.MerchantID = Model.MerchantID; invc.InvoiceNo = Model.InvoiceNo; invc.allowanceNotify = Model.AllowanceNotify; invc.CustomerName = Model.CustomerName; invc.NotifyPhone = Model.NotifyPhone; invc.NotifyMail = Model.NotifyMail; invc.AllowanceAmount = Model.AllowanceAmount; invc.Items.Add(new Item() { ItemName = Model.ItemName, ItemPrice = Model.ItemPrice, ItemCount = Model.ItemCount, ItemWord = Model.ItemWord, ItemAmount = Model.ItemAmount }); //2. 初始化發票Service物件 Invoice <Allowance> inv = new Invoice <Allowance>(); //3. 指定測試環境, 上線時請記得改Prod inv.Environment = EInvoice.Integration.Enumeration.EnvironmentEnum.Stage; //4. 設定歐付寶提供的 Key 和 IV inv.HashIV = "q9jcZX8Ib9LM8wYk"; inv.HashKey = "ejCk326UnaZWKisg"; //5. 執行API的回傳結果(JSON)字串 string json = inv.post(invc); //6. 解序列化,還原成物件使用 //AllowanceReturn obj = new AllowanceReturn(); //obj = JsonConvert.DeserializeObject<AllowanceReturn>(json); //obj.XXX; // ... ViewBag.message = json; return(View()); }
// GET: Allowances/Delete/5 public async Task <IActionResult> Delete(int?id) { if (id == null) { return(NotFound()); } var allowance = await _context.Allowance .Include(a => a.AllowanceType).Include(e => e.CreatedBy).Include(e => e.AssignedCategory) .FirstOrDefaultAsync(m => m.AllowanceID == id); if (allowance == null) { return(NotFound()); } AllowanceViewModel viewModel = GetAllowance(allowance); viewModel.IsFromFilter = _viewModel.IsFromFilter; return(View(viewModel)); }
private Expression <Func <Models.Allowance, bool> > GetWhere(AllowanceViewModel model) { Expression <Func <Models.Allowance, bool> > where = c => true; if (!string.IsNullOrEmpty(model.MonthId)) { var prefix = where.Compile(); where = c => prefix(c) && c.Month.Month.ToString() == model.MonthId; } else { var prefix = where.Compile(); where = c => prefix(c) && c.Month > DateTime.Today.AddMonths(-6); } if (!string.IsNullOrEmpty(model.CategoryID)) { var prefix = where.Compile(); where = c => prefix(c) && c.AssignedCategoryId.ToString() == model.CategoryID; } if (!string.IsNullOrEmpty(model.AllowanceTypeId)) { var prefix = where.Compile(); where = c => prefix(c) && c.AllowanceTypeId.ToString() == model.AllowanceTypeId; } if (!string.IsNullOrEmpty(model.ApprovedStatusId)) { var prefix = where.Compile(); where = c => prefix(c) && c.ApprovedStatus == (ApprovedStatus)Enum.Parse(typeof(ApprovedStatus), model.ApprovedStatusId, true); } if (!string.IsNullOrEmpty(model.UserID)) { var prefix = where.Compile(); where = c => prefix(c) && c.CreatedById.ToString() == model.UserID; } return(where); }
private AllowanceViewModel GetAllowance(Allowance allowance) { AllowanceViewModel ViewModel = new AllowanceViewModel() { AllowanceDate = allowance.CreatedOn, AllowanceID = allowance.AllowanceID, AllowanceType = allowance.AllowanceType, Status = allowance.ApprovedStatus, AssignedBy = allowance.AssignedBy, CreatedBy = allowance.CreatedBy, Comments = allowance.Description, Price = allowance.Price, CreatedOn = allowance.CreatedOn, AssignedCategory = allowance.AssignedCategory, AllowanceTypeId = allowance.AllowanceTypeId.ToString(), AllownanceDates = JsonConvert.DeserializeObject <List <string> >(allowance.AllowanceDates), AllownanceDatesjsonResult = allowance.AllowanceDates, NumberOfDays = allowance.NumberOfDays, Month = allowance.Month, UserID = allowance.CreatedById }; return(ViewModel); }
public async Task <IActionResult> Edit(int id, AllowanceViewModel viewModel) { AllowancesFilterViewModel filter = _viewModel; var user = await userManager.GetUserAsync(HttpContext.User); if (id != viewModel.AllowanceID) { return(NotFound()); } if (ModelState.IsValid) { try { var allowance = await _context.Allowance.FindAsync(id); allowance.ModifiedOn = DateTime.Now; allowance.Description = viewModel.Comments; allowance.NumberOfDays = AllowanceDates.Count(); allowance.AllowanceDates = JsonConvert.SerializeObject(AllowanceDates); allowance.Price = viewModel.Price; allowance.Month = viewModel.Month; if (!string.IsNullOrEmpty(viewModel.ApprovedStatusId) && ((int)allowance.ApprovedStatus).ToString() != viewModel.ApprovedStatusId) { allowance.ApprovedStatus = Enum.GetValues(typeof(ApprovedStatus)).Cast <ApprovedStatus>().SingleOrDefault(e => ((int)e).ToString() == viewModel.ApprovedStatusId); } allowance.AllowanceType = _context.AllowanceType.SingleOrDefault(e => e.AllowanceTypeId.ToString() == viewModel.AllowanceTypeId); allowance.Description = viewModel.Comments; allowance.Month = Convert.ToDateTime(AllowanceDates.FirstOrDefault()); _context.Update(allowance); await _context.SaveChangesAsync(); } catch (DbUpdateConcurrencyException) { if (!AllowanceExists(viewModel.AllowanceID)) { return(NotFound()); } else { throw; } } if (_viewModel.IsFromFilter || viewModel.IsFromFilter) { return(await Filter(_viewModel)); } return(RedirectToAction(nameof(Index))); } List <AllowanceType> allowanceTypes = _context.AllowanceType.Where(e => e.IsActive).ToList(); List <AllowanceType> tempAllowanceTypes = new List <AllowanceType>(); allowanceTypes.ForEach(model => { model.catagoriesList = model.Categories != null ? JsonConvert.DeserializeObject <List <Category> >(model.Categories) : null; if (model.catagoriesList != null && model.catagoriesList.Exists(e => e.CategoryId == user.CategoryId)) { tempAllowanceTypes.Add(model); } }); viewModel.AllowanceTypes = tempAllowanceTypes.Select(e => new SelectListItem { Text = e.AllowanceTypeName, Value = e.AllowanceTypeId.ToString(), Selected = e.AllowanceTypeId.ToString() == viewModel.AllowanceTypeId ? true : false }).ToList(); viewModel.AllowanceTypesDetails = _context.AllowanceType.Where(e => e.IsActive).ToList(); viewModel.ApprovedStatus = Enum.GetValues(typeof(ApprovedStatus)).Cast <ApprovedStatus>().Select(v => new SelectListItem { Text = v.ToString(), Value = ((int)v).ToString(), Selected = ((int)v).ToString() == viewModel.ApprovedStatusId ? true : false }).ToList(); return(View(viewModel)); }