public IActionResult InsertOrUpdateMembershipPrivilege([FromBody] MembershipPrivilegesCreateModel model) { try { var result = _membershipPrivilegeService.CreateOrUpdateMembershipPrivileges(model).Result; return(Ok(result)); } catch (Exception ex) { return(BadRequest(ex.StackTrace.ToString())); } }
public MembershipPrivilegesCreateModel GetMembershipPrivilegesById(int id) { var data = new MembershipPrivilegesCreateModel(); try { var privilege = _dbConfigContext.AqmembershipDiscountPrivileges.SingleOrDefault(x => x.Id == id); if (id != 0 && privilege == null) { return(null); } else { if (id == 0) { data = new MembershipPrivilegesCreateModel { EffectiveDate = DateTime.Now, EffectiveEndDate = DateTime.Now.AddYears(1) }; } else { data = _mapper.Map <AqmembershipDiscountPrivileges, MembershipPrivilegesCreateModel>(privilege); } var listBooking = _dbConfigContext.CommonValues.Where(x => x.ValueGroup == "BOOKINGPORTALDOMAIN").ToList(); var privilegeDetails = _dbConfigContext.AqmembershipDiscountPrivilegeDetails.Where(x => x.PrivilegeFid == id).ToList(); data.DataDetail = listBooking.GroupJoin(privilegeDetails.Where(c => c.PrivilegeFid == id), x => x.UniqueId, y => y.BookingDomainUniqueId, (x, y) => new { Booking = x, Privilege = y }).SelectMany(x => x.Privilege.DefaultIfEmpty(), (x, y) => new { b = x.Booking, p = y }).Select(a => new MembershipPrivilegesDetailCreateModel() { ID = a.p?.Id, BookingDomainFID = a.b.Id, BookingDomainName = a.b.Text, BookingDomainUniqueID = a.b.UniqueId, DiscountPercent = a.p?.DiscountPercent, PrivilegeFID = a.p?.PrivilegeFid, Remark = a.p?.Remark }).ToList(); return(data); } } catch { throw; } }
bool CheckValidMembershipPrivileges(MembershipPrivilegesCreateModel model) { IQueryable <AqmembershipDiscountPrivileges> entities; if (model.ID > 0) { entities = _dbConfigContext.AqmembershipDiscountPrivileges.Where(x => !x.Deleted && x.Id != model.ID && x.EffectiveEndDate != null && x.EffectiveDate <= model.EffectiveDate && x.EffectiveEndDate >= model.EffectiveDate); } else { entities = _dbConfigContext.AqmembershipDiscountPrivileges.Where(x => !x.Deleted && x.EffectiveEndDate != null && x.EffectiveDate <= model.EffectiveDate && x.EffectiveEndDate >= model.EffectiveDate); } if (entities.Count() > 0) { return(false); } return(true); }
public async Task <BasicResponse> CreateOrUpdateMembershipPrivileges(MembershipPrivilegesCreateModel model) { try { var check = CheckValidMembershipPrivileges(model); if (check) { var entity = _dbConfigContext.AqmembershipDiscountPrivileges.FirstOrDefault(x => x.Id == model.ID); if (entity != null) { entity.Name = model.Name; entity.Remark = model.Remark; entity.EffectiveDate = model.EffectiveDate; entity.EffectiveEndDate = model.EffectiveEndDate; entity.LastModifiedBy = GetCurrentUserId(); entity.LastModifiedDate = DateTime.Now; entity.RoleFid = model.RoleFID; var details = _dbConfigContext.AqmembershipDiscountPrivilegeDetails.Where(x => x.PrivilegeFid == model.ID).ToList(); foreach (var i in details) { i.LastModifiedBy = GetCurrentUserId(); i.LastModifiedDate = DateTime.Now; i.DiscountPercent = model.DataDetail.Find(x => x.ID == i.Id).DiscountPercent.GetValueOrDefault(); } _dbConfigContext.AqmembershipDiscountPrivileges.Update(entity); _dbConfigContext.AqmembershipDiscountPrivilegeDetails.UpdateRange(details); UpdateOldMembershipPrivileges(entity); _dbConfigContext.AqmembershipDiscountPrivileges.UpdateRange(entity); } else { var newMF = _mapper.Map <MembershipPrivilegesCreateModel, AqmembershipDiscountPrivileges>(model); newMF.CreatedBy = GetCurrentUserId(); newMF.CreatedDate = DateTime.Now; newMF.LastModifiedBy = GetCurrentUserId(); newMF.LastModifiedDate = DateTime.Now; _dbConfigContext.AqmembershipDiscountPrivileges.Add(newMF); await _dbConfigContext.SaveChangesAsync(); var newDetails = _mapper.Map <List <MembershipPrivilegesDetailCreateModel>, List <AqmembershipDiscountPrivilegeDetails> >(model.DataDetail); foreach (var i in newDetails) { i.PrivilegeFid = newMF.Id; i.LastModifiedBy = GetCurrentUserId(); i.LastModifiedDate = DateTime.Now; } _dbConfigContext.AqmembershipDiscountPrivilegeDetails.AddRange(newDetails); UpdateOldMembershipPrivileges(newMF); } await _dbConfigContext.SaveChangesAsync(); return(BasicResponse.Succeed("Success")); } else { return(BasicResponse.Failed("Effective Date Invalid!")); } } catch { throw; } }