using System;
using System.Text;
using System.Web;
using System.Web.Services;
using System.Web.Services.Protocols;

[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
public class Service : System.Web.Services.WebService
{
   public Service()
   {

      // Uncomment the following line if using designed components 
      // InitializeComponent();
   }

   [WebMethod]
   public string HelloWorld()
   {
      return "Witaj Świecie";
   }

   [WebMethod(Description =
     "Łączy dwa łańcuchy znakowe, zwraca wynik konkatenacji oraz długość łańcucha wynikowego.")]
   public int StringConcat(string string1, string string2, out string stringTotal)
   {
      StringBuilder sb = new StringBuilder();
      sb.Append(string1);
      sb.Append(string2);
      stringTotal = sb.ToString();
      return stringTotal.Length;
   }

   [WebMethod(Description = "Przelewa kwotę pieniężną pomiędzy kontami.",
      TransactionOption = System.EnterpriseServices.TransactionOption.Required)]
   public void Transfer(string sourceAccount, string destAccount, decimal amount)
   {
      // przelej kwotę 'amount' z konta 'sourceAcount' na konto 'destAccount'
   }

   [WebMethod(Description = "Zasięga informacji dotyczących salda określonego rachunku bankowego.")]
   public decimal Inquiry(string account)
   {
      return 0.0m;
   }

   [WebMethod(Description = "Deponuje kwotę pieniężną na podanym rachunku.",
     TransactionOption = System.EnterpriseServices.TransactionOption.Required)]
   public void Deposit(string destAccount, decimal amount)
   {
      // deponuje kwotę 'amount' na konto 'destAccount'
   }

   [WebMethod(Description = "Ustawia wartość zmiennej stanu sesji", EnableSession = true)]
   public void SetSessionVariable(string variable, string value)
   {
      Session[variable] = value;
   }

   [WebMethod(Description = "Pobiera wartość zmiennej stanu sesji", EnableSession = true)]
   public string QuerySessionVariable(string variable)
   {
      return (string)Session[variable];
   }

   [WebMethod(Description = "Ustawia wartość zmiennej o zasięgu dla całej aplikacji")]
   public void SetAppVariable(string variable, string value)
   {
      Application[variable] = value;
   }

   [WebMethod(Description = "Pobiera wartość zmiennej o zasięgu dla całej aplikacji")]
   public string GetAppVariable(string variable)
{
   return (string)Application[variable];
}


}

