public async Task <OperationResult <Service> > AddAsync(int providerId, ProviderServiceBindingModel model, int userId)
        {
            var newItem = ProviderServiceBindingModel.ToService(model, providerId);

            Repo.AddOrUpdate(newItem);
            await Repo.SaveAsUserAsync(userId);

            Repo.BindGrades(newItem);
            await Repo.SaveAsUserAsync(userId);

            var storedItem = Repo.GetGraphs(x => x.Id == newItem.Id).First();

            return(OperationResult <Service> .Ok(storedItem));
        }
        public async Task <IHttpActionResult> Put(int id, [FromBody] ProviderServiceBindingModel model)
        {
            // check model validity !!!
            var result = await ProviderServiceManager.UpdateAsync(model, UserId);

            if (result.Success)
            {
                var service = AutoMapper.Mapper.Map <ServiceViewModel>(result.Data);
                return(Ok(service));
            }
            else
            {
                return(BadRequest(result.ErrorMessage));
            }
        }
        public async Task <OperationResult <Service> > UpdateAsync(ProviderServiceBindingModel model, int userId)
        {
            // error handling
            var service = Repo.GetGraphs(x => x.Id == model.Id.Value).First();

            service.ServiceUOMId = model.uomId;
            service.Rate.Minrate = model.MinRate;
            service.Rate.MaxRate = model.MaxRate;
            service.QA.Stars     = (Stars)model.qaStars;
            service.QA.Comment   = model.Comment;
            service.CurrencyId   = model.currencyId;

            await SaveChangesAsync(userId);

            return(OperationResult <Service> .Ok(service));
        }
        public async Task <IHttpActionResult> Post(int id, [FromBody] ProviderServiceBindingModel model)
        {
            // ATTN: NAITVE IMPLEMENTATION !!!
            if (model == null)
            {
                return(BadRequest("Нет информации об услуге."));
            }
            var result = await ProviderServiceManager.AddAsync(id, model, UserId);

            if (result.Success)
            {
                var service = AutoMapper.Mapper.Map <ServiceViewModel>(result.Data);
                return(Ok(service));
            }
            else
            {
                return(BadRequest(result.ErrorMessage));
            }
        }