public IActionResult Edit(EditSubscriptionCardInputModel model) { if (!ModelState.IsValid) { List <SelectListItem> cardTypes, validityCards; GetCardTypesAndValidityCards(out cardTypes, out validityCards); model.ValidityCards = validityCards; return(this.View(model)); } var result = this.SubscriptionCardService.EditSubscriptionCard(model); 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(this.RedirectToAction(nameof(Edit), new { id = model.Id })); } return(this.RedirectToAction(nameof(Index))); }
public BaseModel EditSubscriptionCard(EditSubscriptionCardInputModel model) { var subscritionCard = this.Db.SubscriptionCards.FirstOrDefault(x => x.Id == model.Id); if (subscritionCard == null) { this.BaseModel.HasError = true; this.BaseModel.Message = MessageConstants.InvalidCardId; return(this.BaseModel); } if (!Enum.TryParse(model.ValidityCard, out ValidityCard validityCard)) { this.BaseModel.HasError = true; this.BaseModel.Message = MessageConstants.InvalidValidityType; return(this.BaseModel); } var ticketId = GetTicketId(model.Price, subscritionCard.CountTrips); var customerCards = this.Db.CustomerCards .Where(x => x.Type == subscritionCard.TypeCard && x.CountTrips == subscritionCard.CountTrips) .ToList(); subscritionCard.Price = model.Price; subscritionCard.ValidityCard = validityCard; subscritionCard.TicketId = ticketId; try { this.Db.SubscriptionCards.Update(subscritionCard); this.Db.SaveChanges(); this.BaseModel.HasError = false; this.BaseModel.Message = MessageConstants.EditSubscriptionCard; } catch (Exception) { this.BaseModel.HasError = true; this.BaseModel.Message = MessageConstants.NoEditSubscriptionCard; return(this.BaseModel); } if (customerCards.Any()) { foreach (var customerCard in customerCards) { customerCard.TicketId = ticketId; switch (validityCard) { case ValidityCard.Day: customerCard.ValidTo = customerCard.ValidFrom?.AddDays(1); break; case ValidityCard.Month: customerCard.ValidTo = customerCard.ValidFrom?.AddMonths(1); break; case ValidityCard.Year: customerCard.ValidTo = customerCard.ValidFrom?.AddYears(1); break; case ValidityCard.Indefinitely: customerCard.ValidTo = DateTime.MaxValue; break; } this.Db.CustomerCards.Update(customerCard); this.Db.SaveChanges(); } } return(this.BaseModel); }