Rev 35961 | View as "text/plain" | Blame | Compare with Previous | Last modification | View Log | RSS feed
package com.spice.profitmandi.dao.entity.fofo;import com.fasterxml.jackson.annotation.JsonIgnore;import com.spice.profitmandi.common.enumuration.ActivationType;import com.spice.profitmandi.common.enumuration.CounterSize;import com.spice.profitmandi.common.enumuration.FofoType;import com.spice.profitmandi.common.exception.ProfitMandiBusinessException;import com.spice.profitmandi.dao.entity.user.Address;import javax.persistence.*;import java.io.Serializable;import java.time.LocalDate;import java.time.LocalDateTime;import java.util.Objects;/*** This class basically contains store code details** @author ashikali*/@Entity@Table(name = "fofo.fofo_store")@NamedQueries({@NamedQuery(name = "FofoStore.selectAllDtrUserIds", query = "select ua.userId from FofoStore fs join UserAccount ua on fs.id=ua.accountKey "+ "where ua.type='saholic' and fs.internal=false and fs.active=true"),@NamedQuery(name = "FofoStore.selectGroupByBrandWarehousePartnerSale", query = "select new com.spice.profitmandi.dao.model.BrandWisePartnerSaleModel(foi.brand, "+ "sum(case when foi.createTimestamp >= :lmsStartDate AND foi.createTimestamp < :lmsEndDate then CAST(foi.quantity*foi.mop AS integer ) else 0 end),"+ "sum(case when foi.createTimestamp >= :lmsStartDate AND foi.createTimestamp < :lmsEndDate then foi.quantity else 0 end),"+ "sum(case when foi.createTimestamp >= :mtdStartDate AND foi.createTimestamp < :mtdEndDate then CAST(foi.quantity*foi.mop AS integer ) else 0 end),"+ "sum(case when foi.createTimestamp >= :mtdStartDate AND foi.createTimestamp < :mtdEndDate then foi.quantity else 0 end), "+ "sum(case when foi.createTimestamp >= :lmtdStartDate AND foi.createTimestamp < :lmtdEndDate then CAST(foi.quantity*foi.mop AS int) else 0 end), "+ "sum(case when foi.createTimestamp >= :lmtdStartDate AND foi.createTimestamp < :lmtdEndDate then foi.quantity else 0 end))"+ " from FofoStore fs join FofoOrder fo on fs.id = fo.fofoId join FofoOrderItem foi on foi.orderId = fo.id join Item i on i.id = foi.itemId where fo.cancelledTimestamp is null and fs.active = true "+ "and foi.createTimestamp >= :lmtdStartDate and i.categoryId = :categoryId and fs.id in :fofoId"+ " group by foi.brand"),@NamedQuery(name = "FofoStore.selectGroupByBrandWarehousePartnerAccessoriesSale", query = "select new com.spice.profitmandi.dao.model.BrandWisePartnerSaleModel(foi.brand, "+ "sum(case when foi.createTimestamp >= :lmsStartDate AND foi.createTimestamp < :lmsEndDate then CAST(foi.quantity*foi.mop AS integer ) else 0 end),"+ "sum(case when foi.createTimestamp >= :lmsStartDate AND foi.createTimestamp < :lmsEndDate then foi.quantity else 0 end),"+ "sum(case when foi.createTimestamp >= :mtdStartDate AND foi.createTimestamp < :mtdEndDate then CAST(foi.quantity*foi.mop AS integer ) else 0 end),"+ "sum(case when foi.createTimestamp >= :mtdStartDate AND foi.createTimestamp < :mtdEndDate then foi.quantity else 0 end), "+ "sum(case when foi.createTimestamp >= :lmtdStartDate AND foi.createTimestamp < :lmtdEndDate then CAST(foi.quantity*foi.mop AS int) else 0 end), "+ "sum(case when foi.createTimestamp >= :lmtdStartDate AND foi.createTimestamp < :lmtdEndDate then foi.quantity else 0 end))"+ " from FofoStore fs join FofoOrder fo on fs.id = fo.fofoId join FofoOrderItem foi on foi.orderId = fo.id join Item i on i.id = foi.itemId where fo.cancelledTimestamp is null and fs.active = true "+ "and foi.createTimestamp >= :lmtdStartDate and i.categoryId != :categoryId and fs.id in :fofoId"+ " group by foi.brand"),@NamedQuery(name = "FofoStore.selectGroupByWarehouseBrandWisePartnerSale", query = "select new com.spice.profitmandi.dao.model.WarehouseWiseBrandSaleModel("+ "(case when a.city in ('Noida', 'Ghaziabad') and foi.brand = 'Vivo' then 7573 else fs.warehouseId end) AS col_0_0_,"+ "sum(case when foi.createTimestamp >= :lmsStartDate AND foi.createTimestamp < :lmsEndDate then CAST(foi.quantity*foi.mop AS int) else 0 end),"+ "sum(case when foi.createTimestamp >= :lmsStartDate AND foi.createTimestamp < :lmsEndDate then foi.quantity else 0 end),"+ "sum(case when foi.createTimestamp >= :mtdStartDate AND foi.createTimestamp < :mtdEndDate then CAST(foi.quantity*foi.mop AS int) else 0 end),"+ "sum(case when foi.createTimestamp >= :mtdStartDate AND foi.createTimestamp < :mtdEndDate then foi.quantity else 0 end), "+ "sum(case when foi.createTimestamp >= :lmtdStartDate AND foi.createTimestamp < :lmtdEndDate then CAST(foi.quantity*foi.mop AS int) else 0 end), "+ "sum(case when foi.createTimestamp >= :lmtdStartDate AND foi.createTimestamp < :lmtdEndDate then foi.quantity else 0 end))"+ " from FofoStore fs join FofoOrder fo on fs.id = fo.fofoId join FofoOrderItem foi on foi.orderId = fo.id join Item i on i.id = foi.itemId"+ " join com.spice.profitmandi.dao.entity.user.User u on u.id = fs.id join Address a on a.id = u.addressId"+ " where fo.cancelledTimestamp is null and fs.active = true"+ " and foi.createTimestamp >= :lmtdStartDate and foi.brand = :brand and i.categoryId = :categoryId and fs.id in :fofoId"+ " group by col_0_0_"),@NamedQuery(name = "FofoStore.selectWarehouseBrandItemSale", query = "select new com.spice.profitmandi.dao.model.WarehouseBrandWiseItemSaleModel(fs.warehouseId,i.id, i.brand, i.modelName, i.modelNumber,i.color,"+ "sum(case when foi.createTimestamp >= :lmsStartDate AND foi.createTimestamp < :lmsEndDate then CAST(foi.quantity*foi.mop AS int) else 0 end),"+ "sum(case when foi.createTimestamp >= :lmsStartDate AND foi.createTimestamp < :lmsEndDate then foi.quantity else 0 end),"+ "sum(case when foi.createTimestamp >= :mtdStartDate AND foi.createTimestamp < :mtdEndDate then CAST(foi.quantity*foi.mop AS int) else 0 end),"+ "sum(case when foi.createTimestamp >= :mtdStartDate AND foi.createTimestamp < :mtdEndDate then foi.quantity else 0 end), "+ "sum(case when foi.createTimestamp >= :lmtdStartDate AND foi.createTimestamp < :lmtdEndDate then CAST(foi.quantity*foi.mop AS int) else 0 end), "+ "sum(case when foi.createTimestamp >= :lmtdStartDate AND foi.createTimestamp < :lmtdEndDate then foi.quantity else 0 end))"+ " from FofoStore fs join FofoOrder fo on fs.id = fo.fofoId join FofoOrderItem foi on foi.orderId = fo.id join Item i on i.id = foi.itemId where fo.cancelledTimestamp is null and fs.active = true"+ " and foi.createTimestamp >= :lmtdStartDate and fs.warehouseId in :warehouseId and i.brand = :brand and i.categoryId = :categoryId and fs.id in :fofoId group by i.id"),@NamedQuery(name = "FofoStore.selectGroupByBrandAccesoriesWarehousePartnerSale", query = "select new com.spice.profitmandi.dao.model.BrandWisePartnerSaleModel(foi.brand, "+ "sum(case when foi.createTimestamp >= :lmsStartDate AND foi.createTimestamp < :lmsEndDate then CAST(foi.quantity*foi.mop AS int) else 0 end),"+ "sum(case when foi.createTimestamp >= :lmsStartDate AND foi.createTimestamp < :lmsEndDate then foi.quantity else 0 end),"+ "sum(case when foi.createTimestamp >= :mtdStartDate AND foi.createTimestamp < :mtdEndDate then CAST(foi.quantity*foi.mop AS int) else 0 end),"+ "sum(case when foi.createTimestamp >= :mtdStartDate AND foi.createTimestamp < :mtdEndDate then foi.quantity else 0 end), "+ "sum(case when foi.createTimestamp >= :lmtdStartDate AND foi.createTimestamp < :lmtdEndDate then CAST(foi.quantity*foi.mop AS int) else 0 end), "+ "sum(case when foi.createTimestamp >= :lmtdStartDate AND foi.createTimestamp < :lmtdEndDate then foi.quantity else 0 end))"+ " from FofoStore fs join FofoOrder fo on fs.id = fo.fofoId join FofoOrderItem foi on foi.orderId = fo.id join Item i on i.id = foi.itemId where fo.cancelledTimestamp is null and fs.active = true "+ "and foi.createTimestamp >= :lmtdStartDate and i.categoryId != :categoryId and fs.id in :fofoId"+ " group by foi.brand"),@NamedQuery(name = "FofoStore.selectGroupByWarehouseAccesoriesBrandWisePartnerSale", query = "select new com.spice.profitmandi.dao.model.WarehouseWiseBrandSaleModel(fs.warehouseId,"+ "sum(case when foi.createTimestamp >= :lmsStartDate AND foi.createTimestamp < :lmsEndDate then CAST(foi.quantity*foi.mop AS int) else 0 end),"+ "sum(case when foi.createTimestamp >= :lmsStartDate AND foi.createTimestamp < :lmsEndDate then foi.quantity else 0 end),"+ "sum(case when foi.createTimestamp >= :mtdStartDate AND foi.createTimestamp < :mtdEndDate then CAST(foi.quantity*foi.mop AS int) else 0 end),"+ "sum(case when foi.createTimestamp >= :mtdStartDate AND foi.createTimestamp < :mtdEndDate then foi.quantity else 0 end), "+ "sum(case when foi.createTimestamp >= :lmtdStartDate AND foi.createTimestamp < :lmtdEndDate then CAST(foi.quantity*foi.mop AS int) else 0 end), "+ "sum(case when foi.createTimestamp >= :lmtdStartDate AND foi.createTimestamp < :lmtdEndDate then foi.quantity else 0 end))"+ " from FofoStore fs join FofoOrder fo on fs.id = fo.fofoId join FofoOrderItem foi on foi.orderId = fo.id join Item i on i.id = foi.itemId where fo.cancelledTimestamp is null and fs.active = true"+ " and foi.createTimestamp >= :lmtdStartDate and foi.brand = :brand and i.categoryId != :categoryId and fs.id in :fofoId"+ " group by fs.warehouseId"),@NamedQuery(name = "FofoStore.selectWarehouseAccesoriesBrandItemSale", query = "select new com.spice.profitmandi.dao.model.WarehouseBrandWiseItemSaleModel(fs.warehouseId,i.id, i.brand, i.modelName, i.modelNumber,i.color,"+ "sum(case when foi.createTimestamp >= :lmsStartDate AND foi.createTimestamp < :lmsEndDate then CAST(foi.quantity*foi.mop AS int) else 0 end),"+ "sum(case when foi.createTimestamp >= :lmsStartDate AND foi.createTimestamp < :lmsEndDate then foi.quantity else 0 end),"+ "sum(case when foi.createTimestamp >= :mtdStartDate AND foi.createTimestamp < :mtdEndDate then CAST(foi.quantity*foi.mop AS int) else 0 end),"+ "sum(case when foi.createTimestamp >= :mtdStartDate AND foi.createTimestamp < :mtdEndDate then foi.quantity else 0 end), "+ "sum(case when foi.createTimestamp >= :lmtdStartDate AND foi.createTimestamp < :lmtdEndDate then CAST(foi.quantity*foi.mop AS int) else 0 end), "+ "sum(case when foi.createTimestamp >= :lmtdStartDate AND foi.createTimestamp < :lmtdEndDate then foi.quantity else 0 end))"+ " from FofoStore fs join FofoOrder fo on fs.id = fo.fofoId join FofoOrderItem foi on foi.orderId = fo.id join Item i on i.id = foi.itemId where fo.cancelledTimestamp is null and fs.active = true"+ " and foi.createTimestamp >= :lmtdStartDate and fs.warehouseId in :warehouseId and i.brand = :brand and i.categoryId != :categoryId and fs.id in :fofoId group by i.id"),@NamedQuery(name = "FofoStore.selectPartnerPendingIndentItem", query = "select new com.spice.profitmandi.dao.model.PartnerPendingIndentItemModel(o.retailerName,"+ " li.quantity, li.totalPrice)"+ " from FofoStore fs join Order o on fs.id = o.retailerId join LineItem li on li.orderId = o.id "+ " where li.itemId = :itemId and fs.warehouseId = :warehouseId and o.status = 3"),@NamedQuery(name = "FofoStore.selectUnbilledActivateStockGroupByBrand", query = "select new com.spice.profitmandi.dao.model.BrandWiseUnbilledActivateStockModel(i.brand,"+ " sum(case when ai.activationTimestamp >= :almtdStartDate AND ai.activationTimestamp < :almtdEndDate then 1 else 0 end),"+ " sum(case when ai.activationTimestamp >= :almtdStartDate AND ai.activationTimestamp < :almtdEndDate then CAST(tl.sellingPrice AS int) else 0 end))"+ " from FofoStore fs join InventoryItem ii on fs.id = ii.fofoId join ActivatedImei ai on ai.serialNumber = ii.serialNumber join Item i on i.id = ii.itemId join TagListing tl on tl.itemId = i.id"+ " where fs.active = true and ii.goodQuantity >= 1 and fs.id in :fofoId group by i.brand"),@NamedQuery(name = "FofoStore.selectUnbilledActivateStockGroupByWarehouse", query = "select new com.spice.profitmandi.dao.model.WarehouseWiseBrandUnbilledActivatedModel(fs.warehouseId,"+ " sum(case when ai.activationTimestamp >= :almtdStartDate AND ai.activationTimestamp < :almtdEndDate then 1 else 0 end),"+ " sum(case when ai.activationTimestamp >= :almtdStartDate AND ai.activationTimestamp < :almtdEndDate then CAST(tl.sellingPrice AS int) else 0 end))"+ " from FofoStore fs join InventoryItem ii on fs.id = ii.fofoId join ActivatedImei ai on ai.serialNumber = ii.serialNumber join Item i on i.id = ii.itemId join TagListing tl on tl.itemId = i.id"+ " where fs.active = true and ii.goodQuantity >= 1 and i.brand = :brand and fs.id in :fofoId group by fs.warehouseId"),@NamedQuery(name = "FofoStore.selectWarehouseBrandItemUnbilledActivateStock", query = "select new com.spice.profitmandi.dao.model.WarehouseBrandItemUnbilledActivatedModel(fs.warehouseId,i.id, i.brand, i.modelName, i.modelNumber,i.color,"+ " sum(case when ai.activationTimestamp >= :almtdStartDate AND ai.activationTimestamp < :almtdEndDate then 1 else 0 end),"+ " sum(case when ai.activationTimestamp >= :almtdStartDate AND ai.activationTimestamp < :almtdEndDate then CAST(tl.sellingPrice AS int) else 0 end))"+ " from FofoStore fs join InventoryItem ii on fs.id = ii.fofoId join ActivatedImei ai on ai.serialNumber = ii.serialNumber join Item i on i.id = ii.itemId join TagListing tl on tl.itemId = i.id"+ " where fs.active = true and ii.goodQuantity >= 1 and i.brand = :brand and fs.warehouseId in :warehouseId and fs.id in :fofoId group by i.id"),@NamedQuery(name = "FofoStore.selectGroupByBrandLms", query = "select new com.spice.profitmandi.dao.model.BrandWiseModel(foi.brand, DATE_FORMAT(fo.createTimestamp, :groupParameter),sum(cast(foi.mop*foi.quantity As int)))"+ " from FofoStore fs join FofoOrder fo on fs.id = fo.fofoId join FofoOrderItem foi on foi.orderId = fo.id join Item i on i.id = foi.itemId where fo.cancelledTimestamp is null and fs.active = true "+ " and (foi.createTimestamp between :lmsStartDate and :endDate) and i.categoryId = :categoryId and fs.id in :fofoId and fs.warehouseId in :warehouseId"+ " group by foi.brand,DATE_FORMAT(fo.createTimestamp, :groupParameter)"),})public class FofoStore implements Serializable {private static final long serialVersionUID = 1L;@Id@Column(name = "id", unique = true, updatable = false)private int id;private int codeInt;@Column(name = "code", unique = true)private String code;@Column(name = "latitude")private String latitude;@Column(name = "longitude")private String longitude;@Column(name = "counter_size")@Enumerated(EnumType.STRING)private CounterSize counterSize = CounterSize.TEN_LAC;@Column(name = "counter_potential")private float counterPotential;@Column(name = "warehouse_id")private int warehouseId;@Column(name = "minimum_investment")private float minimumInvestment;@Column(name = "grace_date")private LocalDate graceDate;@Column(name = "investment_ok")private boolean investmentOk;@Columnprivate boolean active = true;@Columnprivate String pan;@Transientprivate Address userAddress;@Column(name = "internal")private boolean internal;@Column(name = "bags_last_credited")private LocalDateTime bagsLastCredited;@Column(name = "fofo_type")@Enumerated(EnumType.STRING)private FofoType fofoType;@Column(name = "activation_type")@Enumerated(EnumType.STRING)private ActivationType activationType = ActivationType.BILLING_PENDING;@Column(name = "active_timestamp")private LocalDateTime activeTimeStamp;@Column(name = "target")private int target;@Column(name = "grace_count")private int graceCount;@Column(name = "astId")private int astId;@Column(name = "gst_number")private String gstNumber;@Column(name = "closed")private boolean closed = false;@Column(name = "closed_timestamp")private LocalDateTime closedTimestamp;@Column(name = "trial")private boolean trial = false;@Column(name = "trial_start")private LocalDate trialStart;@Column(name = "trial_end")private LocalDate trialEnd;public FofoStore() {}public int getAstId() {return astId;}public void setAstId(int astId) {this.astId = astId;}public int getCodeInt() {return codeInt;}public void setCodeInt(int codeInt) {this.codeInt = codeInt;}public int getTarget() {return target;}public void setTarget(int target) {this.target = target;}public ActivationType getActivationType() {return activationType;}public void setActivationType(ActivationType activationType) {this.activationType = activationType;}public float getCounterPotential() {return counterPotential;}public void setCounterPotential(float counterPotential) {this.counterPotential = counterPotential;}public LocalDateTime getBagsLastCredited() {return bagsLastCredited;}public void setBagsLastCredited(LocalDateTime bagsLastCredited) {this.bagsLastCredited = bagsLastCredited;}public boolean isInternal() {return internal;}public void setInternal(boolean internal) {this.internal = internal;}public int getWarehouseId() {return warehouseId;}public void setWarehouseId(int warehouseId) {this.warehouseId = warehouseId;}public boolean isInvestmentOk() {return investmentOk;}public void setInvestmentOk(boolean investmentOk) {this.investmentOk = investmentOk;}public String getPan() {return pan;}public void setPan(String pan) {this.pan = pan;}public int getGraceCount() {return graceCount;}public void setGraceCount(int graceCount) {this.graceCount = graceCount;}public boolean isActive() {return active;}public void setActive(boolean active) {this.active = active;}public LocalDate getGraceDate() {return graceDate;}public void setGraceDate(LocalDate graceDate) {this.graceDate = graceDate;}public float getMinimumInvestment() {return minimumInvestment;}public void setMinimumInvestment(float minimumInvestment) {this.minimumInvestment = minimumInvestment;}/** public int getCreditCycle() { return creditCycle; } public void* setCreditCycle(int creditCycle) { this.creditCycle = creditCycle; }*/public CounterSize getCounterSize() {return counterSize;}public void setCounterSize(CounterSize counterSize) {this.counterSize = counterSize;}public int getId() {return id;}public void setId(int id) {this.id = id;}public String getCode() {return code;}public void setCode(String code) {this.code = code;}public String getLatitude() {return latitude;}public void setLatitude(String latitude) {this.latitude = latitude;}public String getLongitude() {return longitude;}public void setLongitude(String longitude) {this.longitude = longitude;}public Address getUserAddress() {return userAddress;}public void setUserAddress(Address userAddress) {this.userAddress = userAddress;}public LocalDateTime getActiveTimeStamp() {return activeTimeStamp;}public void setActiveTimeStamp(LocalDateTime activeTimeStamp) {this.activeTimeStamp = activeTimeStamp;}public FofoType getFofoType() {return fofoType;}public void setFofoType(FofoType fofoType) {this.fofoType = fofoType;}public String getGstNumber() {return gstNumber;}public void setGstNumber(String gstNumber) {this.gstNumber = gstNumber;}public boolean isClosed() {return closed;}public void setClosed(boolean closed) {this.closed = closed;}public LocalDateTime getClosedTimestamp() {return closedTimestamp;}public void setClosedTimestamp(LocalDateTime closedTimestamp) {this.closedTimestamp = closedTimestamp;}public boolean isTrial() {return trial;}public void setTrial(boolean trial) {this.trial = trial;}public LocalDate getTrialStart() {return trialStart;}public void setTrialStart(LocalDate trialStart) {this.trialStart = trialStart;}public LocalDate getTrialEnd() {return trialEnd;}public void setTrialEnd(LocalDate trialEnd) {this.trialEnd = trialEnd;}@Overridepublic boolean equals(Object o) {if (o == null || getClass() != o.getClass()) return false;FofoStore fofoStore = (FofoStore) o;return id == fofoStore.id && codeInt == fofoStore.codeInt && Float.compare(counterPotential, fofoStore.counterPotential) == 0 && warehouseId == fofoStore.warehouseId && Float.compare(minimumInvestment, fofoStore.minimumInvestment) == 0 && investmentOk == fofoStore.investmentOk && active == fofoStore.active && internal == fofoStore.internal && target == fofoStore.target && graceCount == fofoStore.graceCount && astId == fofoStore.astId && closed == fofoStore.closed && trial == fofoStore.trial && Objects.equals(code, fofoStore.code) && Objects.equals(latitude, fofoStore.latitude) && Objects.equals(longitude, fofoStore.longitude) && counterSize == fofoStore.counterSize && Objects.equals(graceDate, fofoStore.graceDate) && Objects.equals(pan, fofoStore.pan) && Objects.equals(userAddress, fofoStore.userAddress) && Objects.equals(bagsLastCredited, fofoStore.bagsLastCredited) && fofoType == fofoStore.fofoType && activationType == fofoStore.activationType && Objects.equals(activeTimeStamp, fofoStore.activeTimeStamp) && Objects.equals(gstNumber, fofoStore.gstNumber) && Objects.equals(closedTimestamp, fofoStore.closedTimestamp) && Objects.equals(trialStart, fofoStore.trialStart) && Objects.equals(trialEnd, fofoStore.trialEnd);}@Overridepublic int hashCode() {return Objects.hash(id, codeInt, code, latitude, longitude, counterSize, counterPotential, warehouseId, minimumInvestment, graceDate, investmentOk, active, pan, userAddress, internal, bagsLastCredited, fofoType, activationType, activeTimeStamp, target, graceCount, astId, gstNumber, closed, closedTimestamp, trial, trialStart, trialEnd);}@Overridepublic String toString() {return "FofoStore{" +"id=" + id +", codeInt=" + codeInt +", code='" + code + '\'' +", latitude='" + latitude + '\'' +", longitude='" + longitude + '\'' +", counterSize=" + counterSize +", counterPotential=" + counterPotential +", warehouseId=" + warehouseId +", minimumInvestment=" + minimumInvestment +", graceDate=" + graceDate +", investmentOk=" + investmentOk +", active=" + active +", pan='" + pan + '\'' +", userAddress=" + userAddress +", internal=" + internal +", bagsLastCredited=" + bagsLastCredited +", fofoType=" + fofoType +", activationType=" + activationType +", activeTimeStamp=" + activeTimeStamp +", target=" + target +", graceCount=" + graceCount +", astId=" + astId +", gstNumber='" + gstNumber + '\'' +", closed=" + closed +", closedTimestamp=" + closedTimestamp +", trial=" + trial +", trialStart=" + trialStart +", trialEnd=" + trialEnd +'}';}@JsonIgnorepublic boolean isExpired() throws ProfitMandiBusinessException{if(isTrial()) return LocalDate.now().isAfter(trialEnd);else throw new ProfitMandiBusinessException("Not a trial user", "Not a trial user", "Not a trial user");}}