コード例 #1
0
        public async Task <IActionResult> Add([FromBody] ProcedureDto dto)
        {
            if (dto == null)
            {
                return(BadRequest());
            }

            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            var user = await _userManager.GetUserAsync(User);

            var procedure = dto.MapToProcedure(user.Id);

            using (var uow = _unitOfWork.Create())
            {
                try
                {
                    _procedureService.Add(procedure);
                    uow.Commit();
                }
                catch (DbUpdateException)
                {
                    return(new StatusCodeResult(StatusCodes.Status409Conflict));
                }
                catch (RecordNotFoundException ex)
                {
                    return(NotFound(ex.Message));
                }
            }

            return(Ok(procedure));
        }
コード例 #2
0
        public ActionResult Add(ProcedureEntryViewModel procedure)
        {
            var master                      = _masterService.GetBy(procedure.MasterId);
            var requestedProcedure          = _procedureService.Get().FirstOrDefault(p => p.ProcedureId == procedure.ProcedureId);
            var requestedProcedureTimeStart = (procedure.Date + procedure.StartTime.TimeOfDay).TimeOfDay;
            var requestedProcedureTimeEnd   = (procedure.Date + procedure.StartTime.AddHours(requestedProcedure.Duration).TimeOfDay).TimeOfDay;

            if (procedure.Date + procedure.StartTime.TimeOfDay < DateTime.Now)
            {
                TempData["Message"] = "Выберите дату и время не раньше текущей";

                return(RedirectToAction("Main", "Home"));
            }

            var procedureEntries = new List <ProcedureEntry>();

            procedureEntries.AddRange(
                master.Schedules.SelectMany(a => a.ProcedureEntries));

            var procedures = procedureEntries.Select(d => d.Schedule);

            foreach (var masterProcedure in procedures)
            {
                var procedureTimeStart = (masterProcedure.Date + masterProcedure.StartTime.TimeOfDay).TimeOfDay;

                var procedureTimeEnd = (masterProcedure.Date + masterProcedure.EndTime.TimeOfDay).TimeOfDay;

                if (masterProcedure.Date.Date == procedure.Date.Date &&
                    requestedProcedureTimeStart >= procedureTimeStart && requestedProcedureTimeStart <= procedureTimeEnd &&
                    requestedProcedureTimeEnd >= procedureTimeStart && requestedProcedureTimeEnd >= procedureTimeEnd)
                {
                    TempData["Message"] = "Мастер занят в это время, вы можете просмотреть <a id='modal'>его расписание</a>";

                    TempData["MasterSchedule"] = master.Schedules.Where(s => s.Date.Date == procedure.Date.Date);

                    return(RedirectToAction("Main", "Home"));
                }
            }

            var procedureToAdd = Mapper.Map <ProcedureEntryViewModel, ProcedureDto>(procedure);

            procedureToAdd.ClientLogin = User.Identity.Name;

            _procedureService.Add(procedureToAdd);

            TempData["Message"] = "Ваша запись принята";

            return(RedirectToAction("Main", "Home"));
        }
コード例 #3
0
        public async Task <ActionResult> Create(ProcedureViewModel procedureViewModel)
        {
            if (ModelState.IsValid)
            {
                await _procedureService.Add(procedureViewModel.MapToDto());

                return(RedirectToAction("Index"));
            }

            var procedureCategories = _procedureCategoryService.GetItems();

            ViewBag.ProcedureCategoryId = new SelectList(procedureCategories, "Id", "Name", procedureViewModel.ProcedureCategoryId);

            return(View(procedureViewModel));
        }
コード例 #4
0
        public ProcedureBl Add(ProcedureBl item)
        {
            var dto = _service.Add(item?.ToDto());

            return(dto != null ? new ProcedureBl(dto) : null);
        }