Ejemplo n.º 1
0
        public Result CumparaBilet(string titlu, int nrBilete, List <int> locuri)
        {
            RequestVanzare request    = new RequestVanzare();
            UnitOfWork     unitOfWork = new UnitOfWork();

            IList <Spectacol> spectacole = unitOfWork.SpectacolRepository.Get().ToList();

            unitOfWork.Dispose();

            foreach (Spectacol sp in spectacole)
            {
                if (sp.Titlu == titlu)
                {
                    request.SpectacolId = sp.Id;
                }
            }
            request.NrBileteVandute = nrBilete;
            request.Locuri          = locuri;

            sendMessage(tcpClient.GetStream(), request);


            Result response = receiveResponse(tcpClient.GetStream());

            return(response);
        }
Ejemplo n.º 2
0
        private RequestVanzare Receive(NetworkStream stream)
        {
            RequestVanzare vanzare = formatter.Deserialize(stream) as RequestVanzare;

            return(vanzare);
        }
Ejemplo n.º 3
0
 public void sendMessage(NetworkStream stream, RequestVanzare vanzare)
 {
     formatter.Serialize(stream, vanzare);
     stream.Flush();
 }
Ejemplo n.º 4
0
        private void Process(NetworkStream networkStream)
        {
            UnitOfWork     unitOfWork     = new UnitOfWork();
            RequestVanzare requestVanzare = Receive(networkStream);

            if (requestVanzare == null)
            {
                SendMessage(Result.Fail, networkStream);
                return;
            }

            Spectacol spectacol = unitOfWork.SpectacolRepository.GetByID(requestVanzare.SpectacolId);

            if (spectacol == null)
            {
                SendMessage(Result.Fail, networkStream);
                return;
            }

            var locuriLibere = unitOfWork.LocuriLibere(spectacol.Id);

            if (requestVanzare.Locuri.Any(loc => !locuriLibere.Contains(loc)))
            {
                SendMessage(Result.Fail, networkStream);
                return;
            }

            double pret = spectacol.Pret;

            ///Adauga vanzare
            unitOfWork.VanzareRepository.Insert(new Vanzare
            {
                Data            = DateTime.Now,
                NrBileteVandute = requestVanzare.NrBileteVandute,
                SpectacolId     = requestVanzare.SpectacolId,
                Suma            = pret * requestVanzare.NrBileteVandute,
            });

            unitOfWork.Save();

            ///Actualizeaza sold
            spectacol.Sold += pret * requestVanzare.NrBileteVandute;
            unitOfWork.SpectacolRepository.Update(spectacol);
            unitOfWork.Save();


            int vanzareId = unitOfWork.VanzareRepository.Get().OrderByDescending(vanzare => vanzare.Id).First().Id;

            foreach (int loc in requestVanzare.Locuri)
            {
                unitOfWork.VanzariLocuriRepository.Insert(new VanzariLocuri
                {
                    Loc       = loc,
                    VanzareId = vanzareId,
                });

                unitOfWork.Save();
            }

            unitOfWork.Save();
            unitOfWork.Dispose();

            SendMessage(Result.Success, networkStream);
        }