using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Diagnostics;
using System.Web;
using System.Web.Services;
using System.IO;
using Microsoft.Web.Services;
using Microsoft.Web.Services.Dime;

namespace InfoWithAttachment
{
	/// <summary>
	/// Summary description for InformationProvider.
	/// </summary>
	public class InformationProvider : System.Web.Services.WebService
	{
		public InformationProvider()
		{
			//CODEGEN: This call is required by the ASP.NET Web Services Designer
			InitializeComponent();
		}

		#region Component Designer generated code
		
		//Required by the Web Services Designer 
		private IContainer components = null;
				
		/// <summary>
		/// Required method for Designer support - do not modify
		/// the contents of this method with the code editor.
		/// </summary>
		private void InitializeComponent()
		{
		}

		/// <summary>
		/// Clean up any resources being used.
		/// </summary>
		protected override void Dispose( bool disposing )
		{
			if(disposing && components != null)
			{
				components.Dispose();
			}
			base.Dispose(disposing);		
		}
		
		#endregion

		[WebMethod]
		public string getFullName(string lastname)
		{
			return new InfoReaderLib.InfoReader(lastname).getFullName();
		}

		[WebMethod]
		public string getRecord(string lastname)
		{
			return new InfoReaderLib.InfoReader(lastname).getRecord();
		}

		[WebMethod]
		public string getPicture(string lastname)
		{
			String result = "No record-found";

			if (RequestSoapContext.Current == null)
			{
				result = "Sorry only Soap request supported for this method!. You may try the InfoProviderClient in the DIME example given.";
			}
			else
			{
				String fileName = new InfoReaderLib.InfoReader(lastname).getPictureFileName();

				if(fileName != null)
				{
					DimeAttachment attachment = new DimeAttachment("image/jpeg", 
						TypeFormatEnum.MediaType, fileName);

					ResponseSoapContext.Current.Attachments.Add(attachment);

					result = "Picture found for " + lastname;
				}
			}
			return result;
		}
	}
}
