Beispiel #1
0
        public async Task <IActionResult> UpdateSell(int dealId, SellDealModifyViewModel modfyModel)
        {
            var currentDeliveryObjectsTask = _dealObjectProvider.GetDealObjects(dealId);
            var createUserAccountTask      = Task.FromResult(new DataProviderModel <CreateUserAccountModel>(new ResultMessage(0, MessageType.Information, "")));

            if (modfyModel.AccountAction == AccountAction.New)
            {
                createUserAccountTask = _userProvider.CreateUserAccount(modfyModel.PaymentNumber.Value, modfyModel.PaymentType);
            }

            await Task.WhenAll(currentDeliveryObjectsTask, createUserAccountTask);

            var currentDeliveryObjects = currentDeliveryObjectsTask.Result.Model;
            var createUserAccount      = createUserAccountTask.Result.Model;

            var objectsToDelete = currentDeliveryObjects
                                  .Where(c => modfyModel.SelectedDealObjects.All(s => s.ObjectId != c.ObjectId))
                                  .Select(o => o.DealObjectId)
                                  .ToList();

            var objectsToAdd = modfyModel.SelectedDealObjects
                               .Where(s => currentDeliveryObjects.All(c => c.ObjectId != s.ObjectId))
                               .Select(o => o.ObjectId)
                               .ToList();

            var accountId = modfyModel.AccountAction == AccountAction.Existed ? modfyModel.UserAccountId.Value : createUserAccount.AccountId;

            var updateModel = new DealUpdateModel(dealId, objectsToDelete, objectsToAdd, modfyModel.Price, modfyModel.Comment, accountId, modfyModel.DeleveryTypeId,
                                                  modfyModel.Size, modfyModel.Weight, modfyModel.AddressModel.City.CityCode, modfyModel.AddressModel.Locality.LocalityCode,
                                                  modfyModel.AddressModel.RegionCode, modfyModel.AddressModel.Address, (DeleveryLocationType)modfyModel.AddressModel.DeliveryLocationType);

            await _dealProvider.UpdateDeal(updateModel, DealType.Sell);

            return(RedirectToAction(nameof(Index)));
        }
Beispiel #2
0
        public async Task <DataProviderVoidModel> UpdateDeal(DealUpdateModel updateModel, DealType dealType)
        {
            var listQuery = new List <Query>();

            var upsertDealIdentifier = Guid.NewGuid().ToString();
            var upsertDealQuery      = new Query(upsertDealIdentifier, "UpsertDeal");

            upsertDealQuery.Parameters.Add(new QueryParameter("in", "Price", updateModel.Price.ToString(), SqlDbType.Decimal));
            upsertDealQuery.Parameters.Add(new QueryParameter("in", "Comment", updateModel.Comment, SqlDbType.NVarChar));
            upsertDealQuery.Parameters.Add(new QueryParameter("in", "Deal_Id", updateModel.DealId.ToString(), SqlDbType.Int));
            if (dealType == DealType.Sell)
            {
                upsertDealQuery.Parameters.Add(new QueryParameter("in", "Account_Id", updateModel.AccountId.ToString(), SqlDbType.Int));
            }
            upsertDealQuery.Parameters.Add(new QueryParameter("in", "BuySell", dealType == DealType.Buy ? "B" : "S", SqlDbType.Int));
            listQuery.Add(upsertDealQuery);

            foreach (var dealObject in updateModel.DealObjectIdsToDelete)
            {
                var deleteDealObjectIdentifier = Guid.NewGuid().ToString();
                var deleteDealObjectQuery      = new Query(deleteDealObjectIdentifier, "DeleteDealObject");
                deleteDealObjectQuery.ParentQueryGUID.Add(upsertDealIdentifier);
                deleteDealObjectQuery.Parameters.Add(new QueryParameter("in", "DealObject_Id", dealObject.ToString(), SqlDbType.Int));
                listQuery.Add(deleteDealObjectQuery);
            }

            foreach (var objectId in updateModel.ObjectIdsToAdd)
            {
                var upsertDealObjectIdentifier = Guid.NewGuid().ToString();
                var upsertDealObjectQuery      = new Query(upsertDealObjectIdentifier, "UpsertDealObject");
                upsertDealObjectQuery.ParentQueryGUID.Add(upsertDealIdentifier);
                upsertDealObjectQuery.Parameters.Add(new QueryParameter("in", "Object_Id", objectId.ToString(), SqlDbType.Int));
                listQuery.Add(upsertDealObjectQuery);
            }

            var dealDeliveryIdentifier = Guid.NewGuid().ToString();
            var dealDeliveryQuery      = new Query(dealDeliveryIdentifier, "UpsertDealDelivery");

            dealDeliveryQuery.ParentQueryGUID.Add(upsertDealIdentifier);
            dealDeliveryQuery.Parameters.Add(new QueryParameter("in", "DeliveryCptyService_Id", updateModel.DeliveryTypeId.ToString(), SqlDbType.Int));
            dealDeliveryQuery.Parameters.Add(new QueryParameter("in", "Weight_Decl", updateModel.Weight.ToString(), SqlDbType.Int));
            dealDeliveryQuery.Parameters.Add(new QueryParameter("in", "Length_Decl", updateModel.Size.Length.ToString(), SqlDbType.Int));
            dealDeliveryQuery.Parameters.Add(new QueryParameter("in", "Height_Decl", updateModel.Size.Height.ToString(), SqlDbType.Int));
            dealDeliveryQuery.Parameters.Add(new QueryParameter("in", "Width_Decl", updateModel.Size.Width.ToString(), SqlDbType.Int));

            var cityCode = updateModel.DeleveryLocationType == DeleveryLocationType.City ? updateModel.CityCode : updateModel.LocalityCode;

            dealDeliveryQuery.Parameters.Add(new QueryParameter("in", "CityCode", cityCode, SqlDbType.NVarChar));
            dealDeliveryQuery.Parameters.Add(new QueryParameter("in", "Address", updateModel.Address, SqlDbType.NVarChar));
            listQuery.Add(dealDeliveryQuery);

            var result = await _sessionQueryExecutor.Execute(listQuery).ConfigureAwait(false);

            return(new DataProviderVoidModel(result.ResultMessage));
        }
Beispiel #3
0
        public async Task <IActionResult> UpdateBuy(int dealId, DealModifyModel modfyModel)
        {
            var currentDeliveryObjectsTask = _dealObjectProvider.GetDealObjects(dealId);

            var currentDeliveryObjects = (await currentDeliveryObjectsTask).Model;

            var objectsToDelete = currentDeliveryObjects
                                  .Where(c => modfyModel.SelectedDealObjects.All(s => s.ObjectId != c.ObjectId))
                                  .Select(o => o.DealObjectId)
                                  .ToList();

            var objectsToAdd = modfyModel.SelectedDealObjects
                               .Where(s => currentDeliveryObjects.All(c => c.ObjectId != s.ObjectId))
                               .Select(o => o.ObjectId)
                               .ToList();

            var updateModel = new DealUpdateModel(dealId, objectsToDelete, objectsToAdd, modfyModel.Price, modfyModel.Comment, null, modfyModel.DeleveryTypeId,
                                                  modfyModel.Size, modfyModel.Weight, modfyModel.AddressModel.City.CityCode, modfyModel.AddressModel.Locality.LocalityCode,
                                                  modfyModel.AddressModel.RegionCode, modfyModel.AddressModel.Address, (DeleveryLocationType)modfyModel.AddressModel.DeliveryLocationType);

            await _dealProvider.UpdateDeal(updateModel, DealType.Buy);

            return(RedirectToAction(nameof(Index)));
        }