public async Task <HttpResponseMessage> SaveMarketGroupDetails(int MarketDefId, int ClientId) { HttpContent requestContent = Request.Content; string jsonContent = requestContent.ReadAsStringAsync().Result; var marketDefinitionDetails = JsonConvert.DeserializeObject <MarketDefinitionDetails>(jsonContent); MarketDefinition marketDefinition = marketDefinitionDetails.MarketDefinition; var IsEdit = MarketDefId > 0 ? 1 : 0; List <MarketDefinitionPack> marketDefinitionPacks = marketDefinition.MarketDefinitionPacks;//store Packs List <MarketDefinitionBaseMap> marketDefinitionBaseMaps = marketDefinition.MarketDefinitionBaseMaps; marketDefinition.MarketDefinitionPacks = null; marketDefinition.MarketDefinitionBaseMaps = null; //to delete previous market base //_db.Database.ExecuteSqlCommand("Delete from MarketDefinitionbaseMaps Where marketdefinitionid=" + MarketDefId); SqlParameter paramMarketID = new SqlParameter("@MarketDefID", MarketDefId); await _db.Database.ExecuteSqlCommandAsync("exec DeleteMarketDefinitionBaseMap @MarketDefID", paramMarketID); var mkt = new MarketDefinition() { Id = MarketDefId, Name = marketDefinition.Name, ClientId = ClientId, Client = null, MarketDefinitionBaseMaps = null, MarketDefinitionPacks = null, LastSaved = DateTime.Now }; _db.MarketDefinitions.AddOrUpdate(mkt); _db.SaveChanges(); MarketDefId = mkt.Id; // to update market definitionId in base maps foreach (MarketDefinitionBaseMap rec in marketDefinitionBaseMaps) { rec.MarketDefinitionId = MarketDefId; } //to add marketbase again. _db.MarketDefinitionBaseMaps.AddRange(marketDefinitionBaseMaps); await _db.SaveChangesAsync(); await SaveMarketPacks(marketDefinitionPacks, MarketDefId); await SaveGroupData(MarketDefId, marketDefinitionDetails.GroupView, IsEdit); await SaveMarketGroupPack(MarketDefId, marketDefinitionDetails.MarketGroupPack, IsEdit); if (marketDefinitionDetails.MarketGroupFilter != null) { await SaveMarketGroupFilter(MarketDefId, marketDefinitionDetails.MarketGroupFilter, IsEdit); } //return market info var returnDetails = new MarketDefinition() { Id = MarketDefId, Name = mkt.Name, ClientId = mkt.ClientId }; return(Request.CreateResponse(HttpStatusCode.OK, returnDetails)); }
public async Task <HttpResponseMessage> saveClientMarketDef(int ID) { HttpContent requestContent = Request.Content; var jsonContent = requestContent.ReadAsStringAsync().Result; Guid Id = Guid.NewGuid(); int MarketDefId; var client = JsonConvert.DeserializeObject <Client[]>(jsonContent); var marketDefinitionPacks = client[0].MarketDefinitions[0].MarketDefinitionPacks;//store Packs //to remove marketdefinition packs from Marketdefinition model client[0].MarketDefinitions[0].MarketDefinitionPacks = null; //to clear market base when client save market base for (var i = 0; i < client[0].MarketDefinitions[0].MarketDefinitionBaseMaps.Count(); i++) { client[0].MarketDefinitions[0].MarketDefinitionBaseMaps[i].MarketBase = null; } client[0].MarketDefinitions[0].GuiId = Id.ToString(); client[0].MarketDefinitions[0].LastModified = DateTime.Now; var identity = (ClaimsIdentity)User.Identity; int uid = Convert.ToInt32(identity.Claims.FirstOrDefault(c => c.Type == "userid").Value.ToString()); client[0].MarketDefinitions[0].ModifiedBy = uid; using (var db = new EverestPortalContext()) { _db.MarketDefinitions.Add(client[0].MarketDefinitions[0]).ClientId = ID; //_db.SaveChanges(); await _db.SaveChangesAsync(); MarketDefId = client[0].MarketDefinitions[0].Id; } var packsDt = new DataTable(); packsDt.Columns.Add("Pack", typeof(string)); packsDt.Columns.Add("MarketBase", typeof(string)); packsDt.Columns.Add("MarketBaseId", typeof(string)); packsDt.Columns.Add("GroupNumber", typeof(string)); packsDt.Columns.Add("GroupName", typeof(string)); packsDt.Columns.Add("Factor", typeof(string)); packsDt.Columns.Add("PFC", typeof(string)); packsDt.Columns.Add("Manufacturer", typeof(string)); packsDt.Columns.Add("ATC4", typeof(string)); packsDt.Columns.Add("NEC4", typeof(string)); packsDt.Columns.Add("DataRefreshType", typeof(string)); packsDt.Columns.Add("StateStatus", typeof(string)); packsDt.Columns.Add("MarketDefinitionId", typeof(int)); packsDt.Columns.Add("Alignment", typeof(string)); packsDt.Columns.Add("Product", typeof(string)); packsDt.Columns.Add("ChangeFlag", typeof(string)); packsDt.Columns.Add("Molecule", typeof(string)); foreach (var item in marketDefinitionPacks) { item.MarketDefinitionId = MarketDefId; packsDt.Rows.Add(item.Pack, item.MarketBase, item.MarketBaseId, item.GroupNumber, item.GroupName, item.Factor, item.PFC, item.Manufacturer, item.ATC4, item.NEC4, item.DataRefreshType, item.StateStatus, MarketDefId, item.Alignment, item.Product, item.ChangeFlag, item.Molecule); } SqlParameter paramMarketDefinitionID = new SqlParameter("@marketdefinitionid", MarketDefId); SqlParameter paramPacks = new SqlParameter("@TVP", packsDt); paramPacks.SqlDbType = System.Data.SqlDbType.Structured; paramPacks.TypeName = "TYP_MarketDefinitionPacks"; //_db.Database.ExecuteSqlCommand("exec EditMarketDefinition @marketdefinitionid,@TVP", paramMarketDefinitionID, paramPacks); await _db.Database.ExecuteSqlCommandAsync("exec EditMarketDefinition @marketdefinitionid,@TVP", paramMarketDefinitionID, paramPacks); var objClient = _db.MarketDefinitions.Where(u => u.ClientId == ID && u.GuiId == Id.ToString()).FirstOrDefault(); /*var json = JsonConvert.SerializeObject(objClient, Formatting.Indented, * new JsonSerializerSettings * { * ReferenceLoopHandling = ReferenceLoopHandling.Ignore * });*/ return(Request.CreateResponse(HttpStatusCode.OK, objClient)); }