public async Task <IActionResult> Edit ([Bind(Prefix = nameof(UserDetailsViewModel.EditCustomerCard))] EditCustomerCardInputModel model, string id) { if (!ModelState.IsValid) { return(RedirectToAction(nameof(UserController.Details), "User", new { id = id, tab = "3" })); } var result = await this.CustomerCardService.EditCustomerCard(model, id); if (!result.HasError) { this.TempData.Put(MessageConstants.Name, new MessageModel { Type = MessageType.Success, Message = result.Message }); } else { this.TempData.Put(MessageConstants.Name, new MessageModel { Type = MessageType.Danger, Message = result.Message }); } return(RedirectToAction(nameof(UserController.Details), "User", new { id = id, tab = "3" })); }
public async Task <BaseModel> EditCustomerCard(EditCustomerCardInputModel model, string id) { var user = await this.UserManager.FindByIdAsync(id); if (user == null) { this.BaseModel.HasError = true; this.BaseModel.Message = MessageConstants.InvalidUserId; return(this.BaseModel); } if (!Enum.TryParse(model.TypeCard, out TypeCard type)) { this.BaseModel.HasError = true; this.BaseModel.Message = MessageConstants.InvalidCardType; return(this.BaseModel); } var card = this.Db.CustomerCards.FirstOrDefault(x => x.Id == model.Id && x.UserId == user.Id); if (card == null) { this.BaseModel.HasError = true; this.BaseModel.Message = string.Format(MessageConstants.NoCustomerCard, user.UserName); return(this.BaseModel); } var subscriptionCard = this.Db.SubscriptionCards .Where(x => x.TypeCard == type && x.CountTrips == model.CountTrips) .Include(x => x.Ticket) .FirstOrDefault(); if (subscriptionCard == null) { this.BaseModel.HasError = true; this.BaseModel.Message = string.Format(MessageConstants.NoSubCard, model.TypeCard, model.CountTrips); return(this.BaseModel); } var customerCards = this.Db.CustomerCards.Include(x => x.User) .Any(x => x.CustomerCardNumber == model.CustomerCardNumber && x.UserId != id); if (customerCards) { this.BaseModel.HasError = true; this.BaseModel.Message = string.Format(MessageConstants.HaveCustomerCardNumber, model.CustomerCardNumber); return(this.BaseModel); } card.CustomerCardNumber = model.CustomerCardNumber; card.CountTrips = model.CountTrips; card.Type = type; card.ValidFrom = model.ValidateFrom; card.TicketId = subscriptionCard.TicketId; var validityCard = subscriptionCard.ValidityCard; switch (validityCard) { case ValidityCard.Day: card.ValidTo = model.ValidateFrom.AddDays(1); break; case ValidityCard.Month: card.ValidTo = model.ValidateFrom.AddMonths(1); break; case ValidityCard.Year: card.ValidTo = model.ValidateFrom.AddYears(1); break; case ValidityCard.Indefinitely: card.ValidTo = DateTime.MaxValue; break; } try { this.Db.CustomerCards.Update(card); this.Db.SaveChanges(); this.BaseModel.HasError = false; this.BaseModel.Message = MessageConstants.EditCustomerCard; } catch (Exception) { this.BaseModel.HasError = true; this.BaseModel.Message = MessageConstants.NoEditCustomerCard; } return(this.BaseModel); }
public async Task <UserDetailsViewModel> Details(string id, string tab) { var user = this.UserManager.Users .Where(x => x.Id == id) .Include(x => x.CustomerCard) .FirstOrDefault(); if (user == null) { return(null); } var subscriptionCards = this.Db.SubscriptionCards.Select(x => x.TypeCard.ToString()).Distinct().ToList(); var cardTypes = Enum.GetValues(typeof(TypeCard)).Cast <TypeCard>() .Select(x => new SelectListItem { Text = Enum.GetName(typeof(TypeCard), x), Value = x.ToString() }).ToList(); cardTypes = cardTypes.Where(x => subscriptionCards.Contains(x.Text)).ToList(); var allRoles = this.RoleManager.Roles .Select(x => new SelectListItem { Text = x.Name, Value = x.Name }) .ToList(); var userRoles = await this.UserManager.GetRolesAsync(user); var userEditModel = new EditUserInputModel { Email = user.Email, FisrtName = user.FirstName, LastName = user.LastName, Username = user.UserName }; var model = new UserDetailsViewModel { Id = user.Id, UserEdit = userEditModel, Roles = allRoles, UserRoles = userRoles, CardTypes = cardTypes, }; if (user.CustomerCard != null) { var updateCustomerCard = new EditCustomerCardInputModel { Id = user.CustomerCardId.Value, CountTrips = user.CustomerCard.CountTrips, CustomerCardNumber = user.CustomerCard.CustomerCardNumber, TypeCard = user.CustomerCard.Type.ToString(), ValidateFrom = user.CustomerCard.ValidFrom.Value, ValidateTo = user.CustomerCard.ValidTo.Value }; model.EditCustomerCard = updateCustomerCard; } if (tab == null) { model.Tab = "0"; } else { model.Tab = tab; } return(model); }