simple sync code

0 comments

Here is some sync code


			//get a list of things in the local database already
			var localDBList = Models.AssetList.LoadActive();		 // doesnt load IsArchived

			// mark the existing data in local db as 'processing' - if not already inactive
			foreach (var record in localDBList) {
				record.IsProcessing = true;
			}

			//open the infor list, step through each


				
			var fas = new Lawson.FAS001MI.LstAsset();
		
			fas.In.Division_DIVI="200";
			fas.ResultsPerPage=1000;
			fas.Run();
			%>
			M3Host[<%=fas.M3Host %>]<br/>
			M3Port[<%=fas.M3Port %>]<br/>			
			<div style="white-space: nowrap">
			<%
			if(!fas.Error.IsError){
				//int scan=0;
				//foreach (var inforObj in fas.Out) {
				for (int scan=0;scan<fas.Out.Count;scan++) {
					var inforObj=fas.Out[scan];

					%><%=Fmt.PadZeros(scan,5)%>--------<%					

					var javaScriptSerializer = new JavaScriptSerializer();
					var rawData = javaScriptSerializer.Serialize(inforObj);

					var infoID=GetAssetInfoIdent(inforObj);
					//check if the infor item is in the local db
					var asset = localDBList.Find(f=>f.InforM3AssetASID+""==infoID);
					if(asset!=null){
						// if exists, check for changes in the record. (use json object?)
						Logging.dout("found------------------------------------ ["+inforObj.FixedAsset_ASID+"]");
						ImportAssetRecord(asset, inforObj);

						if(rawData!=asset.RawInforData){
							Logging.dout("soomething in the raw data changed from last sync");
						}

						//mark as not processing
						asset.IsProcessing=false;
					
					}else{
						//if not exists, create the record, copy data in from infor data, set to 'not processing'
						Logging.dout("create new asset ["+inforObj.TextLine1_TXT1+"]");
						asset = new Asset();
						ImportAssetRecord(asset, inforObj);
						asset.IsDeleted = false;
						asset.IsArchived = false;
						localDBList.Add(asset);

					}
					asset.RawInforData = rawData; //overwrite existing raw data
				}
				// mark as inactive anything that is still marked as processing
				foreach (var record in localDBList) {
					if (record.IsProcessing) {
						Logging.dout("found item ["+record.AssetName+"] is not in infor any more, mark as deleted");
						record.IsDeleted = true;
					}
				}

				if(Web.Request["doit"]=="1"){
					localDBList.Save();
				}
			}else{
				%>Error:<%=fas.Error.ErrorText %><%
			}

Comments


Leave a Comment