public ActionResult CreateOffer(CreateOfferViewModel model)
        {
            if (ModelState.IsValid)
            {
                string companyId = User.Identity.GetUserId();

                JobOffer offer = new JobOffer();
                offer.Title            = model.Title;
                offer.Description      = model.Description;
                offer.DateCreated      = DateTime.Now;
                offer.TownId           = model.TownId;
                offer.IsActive         = true;
                offer.CompanyId        = companyId;
                offer.BusinessSectorId = model.BusinessSectorId;
                offer.IsPermanent      = model.IsPermanent.MapBools(model.IsTemporary);
                offer.IsFullTime       = model.IsFullTime.MapBools(model.IsPartTime);
                this.Data.JobOffers.Add(offer);
                MessageViewModel message = new MessageViewModel
                {
                    Type = MessageType.Success, Text = "You have successfully created your job offer."
                };
                this.TempData["Message"] = message;

                // TempData["Success"] = "You have successfully created your job offer.";
                return(this.RedirectToAction("CreateOffer"));
            }

            return(this.View(model));
        }
예제 #2
0
        public async Task<IActionResult> Create(CreateOfferViewModel viewModel)
        {
            var specialist = await this.userManager.GetUserAsync(this.User);
            var userId = string.Empty;

            // The specialist can make an offer in two ways - from inquiry/from Ad. If the offer is being made from an inquiry, the Ad is null.
            // The logic of the app: only 1 offer by Ad / many offers by inquiry
            // viewModel.Id => offer ID
            if (viewModel.Id != null)
            {
                userId = await this.adsService.GetUserIdByAdIdAsync(viewModel.Id);
                var existingOffer = await this.offersService.GetExistingOfferAsync<ExistingOfferViewModel>(viewModel.Id, userId, specialist.SpecialistDetailsId);

                if (existingOffer != null)
                {
                    return this.View(nameof(this.ExistingOffer), existingOffer);
                }
            }
            else
            {
                userId = viewModel.ApplicationUserId;
            }

            var inputModel = new CreateOfferInputModel
            {
                SpecialistDetailsId = specialist.SpecialistDetailsId,
                ApplicationUserId = userId,
                AdId = viewModel.Id,
                InquiryId = viewModel.InquiryId,
                PhoneNumber = specialist.PhoneNumber,
            };

            return this.View(inputModel);
        }
예제 #3
0
        public ActionResult Create()
        {
            var currentUserId = User.Identity.GetUserId();
            var userProfile   = _userProfileService.GetUserProfiles(u => u.Id == currentUserId, i => i.ApplicationUser).ToList().SingleOrDefault();
            var appUser       = userProfile?.ApplicationUser;

            if (appUser == null)
            {
                return(HttpNotFound());
            }
            if (!(appUser.EmailConfirmed))
            {
                return(View("PhoneNumberRequest"));
            }
            else
            {
                var model = new CreateOfferViewModel();
                IList <SelectListItem> games = new List <SelectListItem>();
                model.SellerPaysMiddleman = true;
                //games.Add(new SelectListItem { Value = "", Text = "Выберите игру", Selected = true, Disabled = tr });
                foreach (var game in _gameService.GetGames().OrderBy(g => g.Rank))
                {
                    games.Add(new SelectListItem {
                        Value = game.Value, Text = game.Name
                    });
                }

                model.Games = games;

                return(View(model));
            }
        }
예제 #4
0
        public IActionResult Create(CreateOfferViewModel viewModel)
        {
            var offer = this.offersService.CreateOffer(viewModel.Make, viewModel.Model, viewModel.Year,
                                                       viewModel.Price, viewModel.Engine, viewModel.Gearbox, viewModel.Description, viewModel.ImgUrl);

            this.context.Offers.Add(offer);
            this.context.SaveChanges();

            return(this.Redirect("/Offers/OffersList"));
        }
        public void Setup()
        {
            testModel = new CreateOfferViewModel(new DialogCoordinator());

            testApp1 = new Appliance()
            {
                Name = "app1", CreationDate = DateTime.Now, Type = ApplianceTypes.Boiler
            };
            testApp1.DataSheet = new HeatingUnitDataSheet();

            testApp2 = new Appliance()
            {
                Name = "app2", CreationDate = DateTime.Now, Type = ApplianceTypes.Container
            };
            testApp2.DataSheet = new ContainerDataSheet();

            testPack = new PackagedSolution()
            {
                Name = "testPack"
            };
            testPack.ApplianceInstances.Add(new ApplianceInstance()
            {
                Appliance = testApp1, IsPrimary = true
            });
            testPack.ApplianceInstances.Add(new ApplianceInstance()
            {
                Appliance = testApp2
            });
            testPack.CreationDate = DateTime.Now;
            testPack.EnergyLabel  = new List <EEICalculationResult>();

            testPack2 = new PackagedSolution()
            {
                Name = "testPack2"
            };
            testPack2.ApplianceInstances.Add(new ApplianceInstance()
            {
                Appliance = testApp2, IsPrimary = true
            });
            testPack2.ApplianceInstances.Add(new ApplianceInstance()
            {
                Appliance = testApp1
            });
            testPack2.CreationDate = DateTime.Now;
            testPack2.EnergyLabel  = new List <EEICalculationResult>();

            testClient = new Client();
            testClient.ClientInformation = new ClientInformation();
            testClient.CreationDate      = DateTime.Now;

            off = new Offer();
            off.CreationDate     = DateTime.Now;
            off.PackagedSolution = testPack;
            off.Client           = testClient;
        }
예제 #6
0
        public void SendAndSaveOfferFromUser(CreateOfferViewModel model)
        {
            var msg   = _parseEmailService.OfferFromUser(model);
            var email = _smtpManager.SendEmail(msg);

            var message = Mapper.Map <Message>(model);

            message.Body = email.Body;

            _saveEmailService.SaveEmail(message);
        }
예제 #7
0
        public ActionResult CreateOffer(CreateOfferViewModel model)
        {
            if (ModelState.IsValid)
            {
                _emailRepository.SendAndSaveOfferFromUser(model);

                return(RedirectToAction("QuestionConfirmation"));
            }

            return(View(model));
        }
예제 #8
0
        public ActionResult CreateOffer([FromBody] CreateOfferViewModel model)
        {
            if (ModelState.IsValid)
            {
                string companyId = User.Claims.Where(x => x.Type == "UserId").FirstOrDefault().Value;
                _offerService.Add(model, companyId);
                return(Ok("Job offer is successfully created."));
            }

            return(BadRequest(model));
        }
예제 #9
0
        public EmailMessage OfferFromUser(CreateOfferViewModel model)
        {
            var template = _templateRepository.OfferFromUser();
            var body     = Engine.Razor.RunCompile(template, "OfferFromUser", typeof(CreateOfferViewModel), model);

            var message = new EmailMessage()
            {
                Body    = body,
                From    = model.Email,
                Subject = "Oferta od użytkownika"
            };

            return(message);
        }
        public async Task <IActionResult> CreateOffer(string id, CreateOfferViewModel input)
        {
            var user = await this.userManager.GetUserAsync(this.User);

            var offerID = await this.offerService.CreateOffer(id, input, user);

            if (offerID != null)
            {
                await this.vehicleService.BookVehicle(id);
            }

            // redirect to MyOffers menu

            return(this.Redirect("/Vehicle/AllVehicles"));
        }
예제 #11
0
        public async Task <ActionResult> Create()
        {
            var model = new CreateOfferViewModel();

            foreach (var game in (await gameService.GetAllGamesAsync()).OrderBy(g => g.Name))
            {
                model.Games.Add(
                    new SelectListItem
                {
                    Value = game.Value,
                    Text  = game.Name
                }
                    );
            }
            return(View(model));
        }
예제 #12
0
        public void Add(CreateOfferViewModel model, string companyId)
        {
            JobOffer offer = new JobOffer();

            offer.Title            = model.Title;
            offer.Description      = model.Description;
            offer.DateCreated      = DateTime.Now;
            offer.TownId           = model.TownId;
            offer.IsActive         = true;
            offer.CompanyId        = companyId;
            offer.BusinessSectorId = model.BusinessSectorId;
            offer.IsPermanent      = model.IsPermanent;
            offer.IsFullTime       = model.IsFullTime;
            _jobOfferRepository.Add(offer);
            _jobOfferRepository.SaveChanges();
        }
예제 #13
0
        public ActionResult Create(CreateOfferViewModel model)
        {
            if (!ModelState.IsValid)
            {
                return(View(model));
            }

            var offer = Mapper.Map <CreateOfferViewModel, Offer>(model);

            using (var repo = new Repository <Offer>())
            {
                offer = repo.InsertOrUpdate(offer);
            }

            return(RedirectToAction("Detail", new { id = offer.Id }));
        }
예제 #14
0
        public ActionResult Create(CreateOfferViewModel createModel)
        {
            if (!ModelState.IsValid)
            {
                return(PartialView(createModel));
            }

            string userId = User.Identity.GetUserId();

            CreateOfferParams createOfferParams = new CreateOfferParams()
            {
                EmployeeId = userId, JobId = createModel.JobId, Text = createModel.Text, ImplementationDays = createModel.DaysToImplement, OfferPayment = createModel.OfferPayment
            };

            _offerService.CreateOffer(createOfferParams);

            _commitProvider.SaveChanges();
            return(Redirect(Request.UrlReferrer.PathAndQuery));
        }
예제 #15
0
 public IActionResult Create([FromBody] CreateOfferViewModel viewModel)
 {
     try
     {
         _createOfferCommand.Execute(new CreateOfferDto()
         {
             AdId   = viewModel.AdId,
             Amount = viewModel.Amount,
             UserId = GetUserId().Result
         });
         return(StatusCode(201));
     }
     catch (EntityNotFoundException e)
     {
         return(UnprocessableEntity(e.Message));
     }
     catch (Exception e)
     {
         return(StatusCode(500, e.Message));
     }
 }
        public IActionResult CreateOffer(string id)
        {
            var vehicleInfo = this.vehicleService.GetById(id);

            var details = new VehicleOfferDetailsViewModel
            {
                Brand                   = vehicleInfo.Brand,
                Model                   = vehicleInfo.Model,
                CoupeType               = vehicleInfo.CoupeType.ToString(),
                FuelConsumption         = vehicleInfo.FuelConsumption,
                RequiredLicenseCategory = vehicleInfo.RequiredLicenseCategory.ToString(),
                Horsepower              = vehicleInfo.Horsepower,
                PricePerDay             = vehicleInfo.PricePerDay,
            };

            var viewModel = new CreateOfferViewModel();

            viewModel.VehicleDetails = details;

            return(this.View(viewModel));
        }
예제 #17
0
        public async Task <IActionResult> Create(CreateOfferViewModel model)
        {
            if (this.ModelState.IsValid)
            {
                var tutor = await userManager.GetUserAsync(HttpContext.User);

                // TO DO: Enable File Uploading for images

                var dto = mapper.Map <CreateOfferViewModel, OfferDTO>(model);

                dto.TutorId = tutor.Id;
                int id = await this.offerService.AddOffer(dto);

                var result = await this.userManager.AddClaimAsync(tutor,
                                                                  new System.Security.Claims.Claim("Creator", id.ToString()));

                var log = new Log
                {
                    UserId       = this.userManager.GetUserId(HttpContext.User),
                    LogType      = LogType.CreatedAnOffer,
                    DateTime     = DateTime.Now,
                    ResourceId   = id,
                    ResourceType = ResourceType.Comment
                };
                await logService.AddLog(log);

                //return await Task.FromResult<IActionResult>(this.RedirectToRoute("Offer/Details/" + id));
                //this.TempData["Success"] = true;
                return(this.RedirectToAction("Details", "Offer", new { id = id }));
            }

            foreach (var error in this.ModelState.Values.SelectMany(p => p.Errors))
            {
                this.ViewData["Error"] += error + "/n";
            }

            CreateOfferViewModel createModel = CreateModel();

            return(await Task.Run(() => this.View(createModel)));
        }
예제 #18
0
        public async Task <string> CreateOffer(string id, CreateOfferViewModel input, ApplicationUser user)
        {
            var vehicleID = id;
            var vehicle   = await this.vehicleRepository.AllAsNoTracking().Where(x => x.Id == vehicleID).FirstOrDefaultAsync();

            var vehicleRequiredLicense = vehicle.RequiredLicenseCategory.ToString();

            var userLicense = user.LicenseCategories.ToString();
            var userID      = user.Id;

            int totalDays = (input.EndDate - input.StartDate).Days;

            if (!(DateTime.Compare(input.StartDate, input.EndDate) < 0))
            {
                throw new Exception("Start date must be earlier than the end date!");
            }

            if (userLicense != vehicleRequiredLicense)
            {
                throw new Exception($"You need a valid license of type {vehicleRequiredLicense}");
            }

            var totalPrice = totalDays * vehicle.PricePerDay;

            var offer = new Offer {
                VehicleID = vehicleID,
                StartDate = input.StartDate,
                EndDate   = input.EndDate,
                TotalDays = totalDays,
                UserID    = userID,
                IsDeleted = false,
                Price     = totalPrice,
            };

            await this.offerRepository.AddAsync(offer);

            await this.offerRepository.SaveChangesAsync();

            return(offer.Id);
        }
예제 #19
0
        public async Task <ActionResult> Create(CreateOfferViewModel model)
        {
            int         currentUserId = User.Identity.GetUserId <int>();
            Game        game          = gameService.GetGameByValue(model.Game);
            UserProfile user          = await userProfileService.GetUserProfileByIdAsync(currentUserId);

            if (ModelState.IsValid && game != null && user != null)
            {
                var offer = Mapper.Map <CreateOfferViewModel, Offer>(model);
                offer.UserProfile = user;
                offer.Game        = game;
                offerService.CreateOffer(offer);
                offerService.SaveOffer();
                if (Request.Url != null)
                {
                    offer.JobId = MarketplaceMVCHangfire.SetDeactivateOfferJob(offer.Id,
                                                                               Url.Action("Activate", "Offer", new { id = offer.Id }, Request.Url.Scheme), TimeSpan.FromDays(30));
                }
                offerService.SaveOffer();
            }

            return(View(model));
        }
 public void TearDown()
 {
     testModel = null;
 }
예제 #21
0
        public async System.Threading.Tasks.Task <ActionResult> Create(CreateOfferViewModel model, HttpPostedFileBase[] images)
        {
            Tinify.Key = ConfigurationManager.AppSettings["TINYPNG_APIKEY"];
            if (!ModelState.IsValid)
            {
                return(View(model));
            }
            var currentUserId = User.Identity.GetUserId();
            var userProfile   = _userProfileService.GetUserProfiles(u => u.Id == currentUserId, i => i.ApplicationUser).SingleOrDefault();

            if (userProfile != null)
            {
                var appUser = userProfile.ApplicationUser;
                if (appUser != null)
                {
                    if (!(appUser.EmailConfirmed))
                    {
                        return(HttpNotFound("you are not confirmed email or phone number"));
                    }
                }
            }
            else
            {
                return(View("_CreateOfferConfirmationError"));
            }
            if (userProfile.Offers.Count(o => o.State == OfferState.active) >= 10)
            {
                return(View("CrateOfferLimitError"));
            }
            Offer offer = Mapper.Map <CreateOfferViewModel, Offer>(model);

            Game game         = _gameService.GetGameByValue(model.Game);
            var  gameFilters  = _filterService.GetFilters(f => f.Game.Value == game.Value, i => i.Game, i => i.FilterItems).ToList();
            var  modelFilters = model.FilterValues;
            //var gameFilterItems = _filterItemService.GetFilterItems().Where(f => f.Filter.Game == game).ToList();
            var modelFilterItems = model.FilterItemValues;

            if (modelFilters != null && gameFilters.Count != 0)
            {
                if (game != null && modelFilters.Length == gameFilters.Count)
                {
                    for (int i = 0; i < gameFilters.Count; i++)
                    {
                        if (gameFilters[i].Value != modelFilters[i])
                        {
                            return(View("_CreateOfferFilterError"));
                        }

                        bool isContainsFilterItems = false;
                        foreach (var fItem in gameFilters[i].FilterItems)
                        {
                            if (fItem.Value == modelFilterItems[i])
                            {
                                offer.FilterItems.Add(fItem);
                                offer.Filters.Add(gameFilters[i]);
                                isContainsFilterItems = true;
                            }
                        }
                        if (!isContainsFilterItems)
                        {
                            return(View("_CreateOfferFilterError"));
                        }
                    }
                }
                else
                {
                    return(View("_CreateOfferFilterError"));
                }
            }


            foreach (var image in images)
            {
                if (image != null && image.ContentLength <= 1000000 && (image.ContentType == "image/jpeg" || image.ContentType == "image/png"))
                {
                    var extName  = System.IO.Path.GetExtension(image.FileName);
                    var fileName = $@"{Guid.NewGuid()}{extName}";
                    // сохраняем файл в папку Files в проекте
                    string fullPath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory + "\\Content\\Images\\Avatars", fileName);
                    var    urlPath  = Url.Content("~/Content/Images/Screenshots/" + fileName);
                    image.SaveAs(fullPath);


                    offer.ScreenshotPathes.Add(new ScreenshotPath {
                        Value = urlPath
                    });
                }
                else
                {
                    offer.ScreenshotPathes.Add(new ScreenshotPath {
                        Value = null
                    });
                }
            }

            offer.GameId        = game.Id;
            offer.UserProfileId = _userProfileService.GetUserProfileById(User.Identity.GetUserId()).Id;
            offer.DateDeleted   = offer.DateCreated.AddDays(offerDays);

            _offerService.CreateOffer(offer);
            _offerService.SaveOffer();

            if (Request.Url != null)
            {
                offer.JobId = MarketHangfire.SetDeactivateOfferJob(offer.Id,
                                                                   Url.Action("Activate", "Offer", new { id = offer.Id }, Request.Url.Scheme), TimeSpan.FromDays(30));
            }

            _offerService.SaveOffer();
            var offerModel = Mapper.Map <Offer, OfferViewModel>(offer);

            return(View("OfferCreated", offerModel));
        }
예제 #22
0
        public IActionResult Create()
        {
            CreateOfferViewModel model = CreateModel();

            return(View(model));
        }
예제 #23
0
        public ActionResult Create()
        {
            var model = new CreateOfferViewModel();

            return(View(model));
        }